diff --git a/assets/harvester/harvester-1.9.0-rc2.tgz b/assets/harvester/harvester-1.9.0-rc2.tgz
index 0ad7c24c..6184c31a 100644
Binary files a/assets/harvester/harvester-1.9.0-rc2.tgz and b/assets/harvester/harvester-1.9.0-rc2.tgz differ
diff --git a/assets/index.yaml b/assets/index.yaml
index 79802ddd..4f980574 100644
--- a/assets/index.yaml
+++ b/assets/index.yaml
@@ -14,9 +14,9 @@ entries:
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc2
- created: "2026-07-15T11:24:13.656855555Z"
+ created: "2026-07-16T03:50:07.218539541Z"
description: Rancher UI Extension for Harvester
- digest: b994a023a41ba6c1d59ad6961223828fee67a0dda865b74b615146c2b66aedc3
+ digest: 2d0697145725eca5dc4f935d01985a113e2eeeae1ecbb087d3d8c60b55978e1b
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
@@ -419,4 +419,4 @@ entries:
urls:
- assets/harvester/harvester-1.0.0.tgz
version: 1.0.0
-generated: "2026-07-15T11:24:13.656193433Z"
+generated: "2026-07-16T03:50:07.218073892Z"
diff --git a/extensions/harvester/1.9.0-rc2.tgz b/extensions/harvester/1.9.0-rc2.tgz
index 5511046a..44f24524 100644
Binary files a/extensions/harvester/1.9.0-rc2.tgz and b/extensions/harvester/1.9.0-rc2.tgz differ
diff --git a/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js b/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js
index a452d9b3..62f0f04c 100644
--- a/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js
+++ b/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js
@@ -1,2 +1,2 @@
-(("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_rc2"]=("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_rc2"]||[]).push([[37],{49037:function(e){const t=[{wizard:{create:"Create",next:"Proceed",previous:"Back"},generic:{tip:"Tip",resourceExternalLinkTips:"External Link",namespace:"Namespace",notReady:"Not Ready",labels:"Labels",inProgress:"In Progress",basic:"Basic",loading:"Loading...",none:"None",duration:{infinite:"Infinite","1s":"1 second","5s":"5 seconds","10s":"10 seconds","30s":"30 seconds","1m":"1 minute","3m":"3 minutes","5m":"5 minutes"}},unsupported:{serverVersion:"Current version: {serverVersion}",description:"Harvester ui only supports Harvester cluster version greater or equal to 1.3.0.",learnMore:'Learn more about Harvester from the Harvester Web Site or read the Harvester Docs '},nav:{group:{networks:"Networks",backupAndSnapshot:"Backup and Snapshots",Monitoring:"Monitoring",Logging:"Logging","Monitoring and Logging":"Monitoring and Logging",vmimport:"Virtual Machine Imports",vmMigration:"Virtual Machine Migration",Configurations:"Configurations"}},resourceTable:{groupBy:{device:"Group by Device"}},validation:{arrayCountRequired:"At least {count} {key} {count, plural, =1 {is} other {are}} required, and {key} can not be empty."},members:{clusterMemebership:"Cluster Membership",projectMembership:"Project Membership"},asyncButton:{createAndStart:{action:"Create and Start"},restart:{action:"Save and Restart",success:"Restarted",waiting:"Restarting…"}},dialog:{confirmExecution:{title:"Are you sure?",andOthers:"{count, plural,\n=0 {}\n=1 { and one other }\nother { and {count} other }\n}",protip:"Tip: Hold the {alternateLabel} key while clicking action to bypass this confirmation",stop:{message:"Are you sure you want to stop the {type} {names}?"},pause:{message:"Are you sure you want to pause the {type} {names}?"},restart:{message:"Are you sure you want to restart the {type} {names}?"},softreboot:{message:"Are you sure you want to soft reboot the {type} {names}?"}},promptRemove:{title:"Delete {type}",warningMessage:"Deleting the selected {type} permanently removes all resources on {thisOrThese} {type}. This action is irreversible. Do you want to continue?",confirmName:"Type {nameToMatch} to delete the {type}:",protip:"Tip: Hold the {alternateLabel} key while clicking Delete to bypass the confirmation step."}},harvester:{branding:{logos:{tip:"Upload a logo to replace the Harvester logo in the top-level navigation header. Image height should be 21 pixels with a max width of 200 pixels. Max file size is 20KB. Accepted formats: JPEG, PNG, SVG."},favicon:{tip:"Upload an icon to replace the Harvester favicon in the browser tab. Max file size is 20KB"}},productLabel:"Harvester",modal:{backup:{success:"Backup { backUpName } has been initiated.",addBackup:"Add Backup",fileSystemFreezeDeadline:{label:"File System Freeze Deadline"}},quota:{editVMQuota:"Edit VM Quota",editQuota:"Edit Quota",bannerMessage:"Set to empty string or 0 to remove total snapshot size quota."},restore:{success:"Restore { name } created successfully.",title:"Backup and Restore",selectBackup:"Select Backup",message:{backup:"Please select the backup that needs to be restored."}},createTemplate:{title:"Generate Template",name:"Name",description:"Description",message:{tip:"Please enter a template name!",success:"Template { templateName } created successfully.",failed:"Failed generated template!"}},schedule:{title:"Create Schedule",message:{tip:"Please enter a schedule name!",success:"Schedule { name } created successfully.",failed:"Failed create schedule!"}},cloneVM:{title:"Clone Virtual Machine",name:"New Virtual Machine Name",type:"Clone volume data",action:{create:"Create",clone:"Clone"},message:{tip:"Please enter a virtual machine name!",success:"Virtual machine { name } cloned successfully.",failed:"Failed clone virtual machine!"}},osImage:{title:"Delete Image",message:"Are you sure you want to delete the image { name } ?"},downloadImage:{title:"Download Image",banner:"This action takes a while depending on the image size ({ size }). Please be patient.",startMessage:"The download process will auto start once the conversion is complete.",download:"Download"},exportImage:{title:"Export to Image",name:"Name",namespace:"Namespace",message:{success:"Image { name } created successfully."}},storageMigration:{title:"Storage Migration",fields:{sourceVolume:{label:"Source Volume",placeholder:"Select a source volume"},targetVolume:{label:"Target Volume",placeholder:"Select a target volume"}}},dataMigration:{title:"Data Migration",fields:{targetVolumeName:{label:"Target Volume Name",placeholder:"Enter a target volume name"},targetStorageClassName:{label:"Target Storage Class",placeholder:"Select a storage class"}}},migration:{failedMessage:"Latest migration failed!",title:"Migration",vmMigrationTitle:"{count, plural, one {Migrating # VM} other {Migrating # VMs}}",selectedVMs:"The following virtual machine(s) will be migrated to the target node",unknownNode:"(unknown node)",alreadyOnTarget:"Already on Target",fields:{nodeName:{label:"Target Node",placeholder:"Choose Target Node"}}},ejectCDROM:{title:"Eject CD-ROM",warnTip:"Eject volume will restart the virtual machine.",operationTip:"Select the volume you want to delete:",delete:"Delete"},bundle:{title:"Generate a Support Bundle",titleDescription:"Collect system-related logs in Harvester to assist with troubleshooting and support.",tip:'Each field below specifies an aspect of the support bundle. For detailed explanations, please refer to the documentation .',url:"Issue URL",description:"Description",namespaces:{label:"Namespaces",tooltip:"Select additional namespaces to include in the support bundle. See docs support-bundle-namespaces for detail.",selectAll:"Select All",unselectAll:"Unselect All"},timeout:{label:"Timeout",tooltip:"Minutes allows for completion of the support bundle generation process. See docs support-bundle-timeout for detail."},expiration:{label:"Expiration",tooltip:"Minutes before deleting packaged but not downloaded support bundle. See docs support-bundle-expiration for detail."},nodeTimeout:{label:"Node Collection Timeout",tooltip:"Minutes allowed for collecting logs/configurations on nodes. See docs support-bundle-node-collection-timeout for detail."}},hotplugVolume:{success:"Volume { diskName } is mounted to the virtual machine { vm }.",title:"Add Volume"},hotplugNic:{success:"The settings have been saved, but the network interface {interfaceName} will be attached only after the virtual machine is migrated.",title:"Add Network Interface",vmNetwork:"Virtual Machine Network",macAddress:"MAC Address",macAddressTooltip:"If left blank, the MAC address will be automatically generated."},insertCdRomVolume:{success:"{ imageName } is inserted into device { deviceName }.",title:"Insert Image",image:"Image",actionLabel:"Insert Image"},cpuMemoryHotplug:{success:"CPU and Memory are updated to the virtual machine { vm }.",title:"Edit CPU and Memory",maxResourcesMessage:"You can increase the CPU to maximum { maxCpu }C and memory to maximum { maxMemory }."},snapshot:{title:"Take Snapshot",name:"Name",message:{success:"Take Snapshot { name } successfully."}},volumeClone:{title:"Clone Volume",name:"Name",message:{success:"New Volume { name } cloned successfully."}},restoreSnapshot:{title:"Restore Snapshot",name:"New Volume Name",success:"New Volume { name } restored successfully."},vmSnapshot:{title:"Take Virtual Machine Snapshot",name:"Name",success:"Take virtual machine Snapshot { name } successfully.",fileSystemFreezeDeadline:{label:"File System Freeze Deadline"}},restart:{title:"Restart Virtual Machine",tip:"Restart the virtual machine for configuration changes to take effect.",cancel:"Save"}},notification:{title:{succeed:"Succeed",info:"Info",warning:"Warning",error:"Error"},restartRequired:{title:"{count} {count, plural, =1 {Virtual Machine is} other {Virtual Machines are}} Pending Restart",message:"Please restart { vmNames } to apply updated configurations"}},action:{createVM:"Create Virtual Machine",start:"Start",restart:"Restart",softreboot:"Soft Reboot",stop:"Stop",pause:"Pause",deepClone:"Clone",shallowClone:"Clone Template",unpause:"Unpause",encryptImage:"Encrypt Image",decryptImage:"Decrypt Image",ejectCDROM:"Eject CD-ROM",editVMQuota:"Edit Virtual Machine Quota",launchFormTemplate:"Launch instance from template",modifyTemplate:"Modify template (Create new version)",setDefaultVersion:"Set default version",addTemplateVersion:"Add template version",backup:"Take Backup",createSchedule:"Create Schedule",restore:"Restore",restoreNewVM:"Restore New",resumeSchedule:"Resume",suspendSchedule:"Suspend",restoreExistingVM:"Replace Existing",migrate:"Migrate",vmMigrate:"Virtual Machine Migration",cpuAndMemoryHotplug:"Edit CPU and Memory",abortMigration:"Abort Migration",storageMigration:"Storage Migration",cancelStorageMigration:"Cancel Storage Migration",dataMigration:"Data Migration",createTemplate:"Generate Template",enableMaintenance:"Enable Maintenance Mode",disableMaintenance:"Disable Maintenance Mode",enableCPUManager:"Enable CPU Manager",disableCPUManager:"Disable CPU Manager",cordon:"Cordon",uncordon:"Uncordon",addHotplugVolume:"Add Volume",addHotplugNic:"Hotplug Network Interface",exportImage:"Export Image",viewlogs:"View Logs",cancelExpand:"Cancel Expand",snapshot:"Take Snapshot",pvcClone:"Clone Volume",vmSnapshot:"Take Virtual Machine Snapshot",shutdown:"Shut Down",powerOn:"Power On",reboot:"Reboot",reconnect:"Reconnect",forceStop:"Force Stop"},formatters:{hardwareResourceGauge:{allocated:"Allocated",consumption:"{useful} of {total} {units} {suffix}",cores:"CPU",pods:"Pods",ram:"Memory",used:"Used",reserved:"Reserved",units:{cores:"{count, plural,\n=1 {core}\nother {cores}}"}},harvesterIpAddress:{customIpTooltip:"Custom IP (set via annotation)"}},tableHeaders:{hostNetworkConfig:{underlay:"Underlay",underlayTooltip:"Allow this interface to act as the underlay for VM overlay networks.",vlanID:"VLAN ID",mode:"Mode",clusterNetwork:"Cluster Network"},imageEncryption:"Encryption",size:"Size",virtualSize:"Virtual Size",progress:"Progress",message:"Message",phase:"Phase",attachedVM:"Attached Virtual Machine",cpuManager:"CPU Manager",routeConnectivityTooltip:"Connectivity between the VM network and the management network, which the Harvester nodes are connected to.",fingerprint:"Fingerprint",value:"Value",actions:"Actions",readyToUse:"Ready To Use",backupTarget:"Backup Target",targetVm:"Target Virtual Machine",cronExpression:"Cron Expression",retain:"Retain",scheduleType:"Type",configuredProfiles:"Configured Profiles",maxFailure:"Max Failure",sourceVm:"Source Virtual Machine",vmSchedule:"Virtual Machine Schedule",hostIp:"Host IP",vm:{ipAddress:"IP Address",node:"Node",defaultVersion:"Default Version"},network:{type:"Type",vlan:"VLAN ID"},snapshotTargetVolume:"Original Volume",volumeSnapshotCounts:"Snapshot Counts",networkState:"Network State",totalSnapshotQuota:"Total Snapshot Quota",storageClass:"Storage Class",restore:"Restore",vmImportSourceVm:"Source VM",vmImportSourceCluster:"Source Cluster",vmImportStatus:"Import Status",vmImportSourceVDatacenter:"Datacenter",vmImportSourceVEndpoint:"Endpoint",vmImportSourceVClusterStatus:"Cluster Status",vmImportSourceORegion:"Region",vmImportSourceOEndpoint:"Endpoint",vmImportSourceOClusterStatus:"Cluster Status",vmImportSourceOVAUrl:"URL",vmImportSourceOVAStatus:"Status",v4ip:"V4 IP",v6ip:"V6 IP",eipName:"EIP Name",vmMigrationProviderType:"Type",vmMigrationProviderUrl:"URL",vmMigrationMapSourceProvider:"Source Provider",vmMigrationMapDestProvider:"Destination Provider",vmMigrationPlanTargetNs:"Target Namespace",vmMigrationPlanVmCount:"VM Count",vmMigrationMigrationPlan:"Plan"},tab:{volume:"Volumes",network:"Networks",advanced:"Advanced Options",accessCredentials:"Access Credentials",pciDevices:"PCI Devices",vGpuDevices:"vGPU Devices",usbDevices:"USB Devices",vmScheduling:"Virtual Machine Scheduling",quotas:"Quotas",snapshots:"Snapshots",instanceLabel:"Instance Labels",annotations:"Annotations",filesystem:"Filesystem Volume"},fields:{version:"Version",name:"Name",type:"Type",image:"Image",size:"Size",volume:"Volume",network:"Network",model:"Model",macAddress:"MAC address",staticIp:"Static IP",port:"Port",protocol:"Protocol",remove:"Remove",PhysicalNic:"Physical NIC",cpu:"CPU",memory:"Memory",virtualName:"Virtual machine name",promiscuous:"Promiscuous",ipv4Address:"IPv4 address",filterLabels:"Filter labels",filterSchedule:"Filter schedule",storageClass:"Storage class",dockerImage:"Docker image"},pci:{available:"Available Devices",compatibleNodes:"Compatible Nodes",impossibleSelection:"There are no hosts with all of the selected devices.",howToUseDeviceInVMCreation:{prefix:"Use the table below to enable PCI passthrough on each device you want to use in this virtual machine. For vGPU devices, please enable them on the",middle:"vGPU Devices",suffix:"page first."},howToUseDevice:{prefix:"Select the device in the table to enable PCI passthrough. For vGPU devices, please enable them on the",middle:"vGPU Devices",suffix:"page."},deviceInTheSameHost:"You can only select devices on the same host.",showCompatibility:"Show device compatibility matrix",hideCompatibility:"Hide device compatibility matrix",claimError:"Error enabling passthrough on {name}",unclaimError:"Error disabling passthrough on {name}",cantUnclaim:"You cannot disable passthrough on a device claimed by another user.",detachWarning:{title:"Cannot Disable Passthrough",message:"Please detach the device from the VM and save it first before disabling passthrough."},enableGroup:"Enable Group",disableGroup:"Disable Group",labelRequired:"This rule should not be manually altered: it ensures that the PCI devices selected for this virtual machine are available on the virtual machine's host.",goSetting:{prefix:"The pcidevices-controller add-on is not enabled, click",middle:"here",suffix:"to enable the add-on to successfully manage your PCI devices."},noPCIPermission:"Please contact your system administrator to enable the PCI devices first.",enablePassthroughWarning:"Please be careful not to use host-owned PCI devices (e.g., management and VLAN NICs). Incorrect device allocation may cause damage to your cluster, including node failure.",disableResourcePooling:"Disable Resource Pooling",disableResourcePoolingDescription:"Assigns this device a unique resource name so it can be pinned to a specific VM, instead of sharing the pool with other identical devices."},devices:{matrixHostName:"Host Name",matrixDeviceClaimName:"Device Claim Name"},generic:{close:"Close",open:"Open",showMore:"Show More",hideMore:"Hide More",memory:"Memory",cpu:"CPU",storage:"Storage",noFileChosen:"No file chosen",noSchema:"Can not find the custom resource definition: {schema}."},validation:{custom:{tooLongName:'"Name" cannot be more than {max} characters.'},generic:{hasDelete:'{type} "{name}" has been deleted.',maxLength:'"{key}" cannot be more than {max} characters',tabError:"{prefix}: {message}",maximumSize:"Exceed maximum size {max}!",regex:'Invalid {lowerType} "{name}": {upperType} must match the regex "{regex}"'},vm:{name:"name is required!",memory:'"Memory" is required!',duplicatedName:'duplicate {type} name: "{name}"',network:{macFormat:"Invalid MAC address format.",upperType:"Network name",lowerType:"network name"},volume:{upperType:"Volume name",lowerType:"volume name",needAtLeastOneBootable:"At least one bootable volume is required!"}},image:{ruleTip:"The URL you have entered ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw.",ruleFileTip:"The file you have chosen ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw."},hash:{sha512:"Invalid SHA512 checksum."},subnet:{excludeIps:"Exclude IPs cannot be empty. Please remove or fill in the exclude IPs.",aclEmptyError:"The fields in subnet access control list rule can not be empty."}},dashboard:{label:"Dashboard",header:"Harvester Cluster: {cluster}",hardwareResourceGauge:{cpu:"CPU",memory:"Memory",storage:"Storage",allocated:"Allocated"},sections:{events:{label:"Events"},vmMetrics:{label:"Virtual Machine Metrics"}},version:"Version"},host:{console:"Console",label:"Hosts",inconsistentIP:"Host IP is inconsistent, current IP: { currentIP }, initial IP: { initIP }",noConsoleUrl:"Console URL not specified",promote:{none:" ",running:"Promoting",failed:"Promote failed",unknown:"Promote halted",promoteRestart:"Restarting",promoteSucceed:"Promote completed"},tabs:{network:"Network",overview:"Overview",basics:"Basics",instance:"Virtual Machines",monitor:"Monitor Data",storage:"Storage",labels:"Labels",ksmtuned:"Ksmtuned",hugepages:"Hugepages",seeder:"Out-of-band Access"},detail:{kvm:{disableMessage:"Hardware-based virtualization is disabled or not supported. Hardware-based virtualization must be enabled before creating any virtual machines."},title:{network:"Network Configuration"},hostIP:"Host IP",role:"Role",os:"Operating System",create:"Creation Time",update:"Last Update Time",customName:"Custom Name",consoleUrl:"Console URL",more:"More Information",uuid:"UUID",containerRuntime:"Container Runtime",kernel:"Kernel",management:"Management Node",compute:"Compute Node",storage:"Storage",nic:"Physical NIC",notRecommended:"Not recommended",networkType:"Type",manufacturer:"Manufacturer",serialNumber:"Serial Number",model:"Model",etcd:"Witness Node",cpuManager:"CPU Manager"},enableMaintenance:{title:"Enable Maintenance Mode",protip:"The operation will migrate all virtual machines on this node to other nodes.",shutDownVMs:"Check Force option to shutdown virtual machines which cannot be migrated in live mode.",force:"Force"},cordon:{title:"Cordon",protip:"This operation will mark the node { node } as unschedulable."},ksmtuned:{run:"Run Strategy",configure:"Configure",mode:"Mode",modeLink:'Mode ',thresCoef:"Threshold Coefficient",enableMergeNodes:"Enable merging across nodes",enable:"Enable",disable:"Disable",ksmStatus:"KSM Status",modeOption:{standard:"Standard",high:"High-performance",customized:"Customized"},parameters:{title:"Ksmtuned Parameters",boost:"Boost",decay:"Decay",sleepMsec:"Sleep Time (Millisecond)",minPages:"Minimum Pages",maxPages:"Maximum Pages",description:{boost:"The number of scanned pages is incremented each time if the available memory is less than the threshold coefficient.",decay:"The number of scanned pages is decremented each time if the available memory is greater than the threshold coefficient.",sleepMsec:"The interval between two scans (the minimum value is 10ms), which is calculated by the formula (Sleep Milliseconds * 16 * 1024 * 1024/Total Memory).",minPages:"The minimum number of pages per scan, also the configuration for the first run.",maxPages:"Maximum number of pages per scan."}},statistics:{title:'Statistics ',sharing:"Sharing",shared:"Shared",unshared:"Unshared",volatile:"Volatile",fullScans:"Full Scans",stableNodeChains:"Stable Node Chains",stableNodeDups:"Stable Node Dups"}},hugepages:{meminfo:"Meminfo",transparent:{title:'Transparent Hugepages ',enabled:"Enabled",shmemEnabled:"Shared Memory Enabled",defrag:"Defragmentation"},status:{anon:"Anonymous Hugepages (bytes)",size:"Default Hugepage Size (bytes)",total:"Total Hugepages",free:"Free Hugepages",rsvd:"Reserved Hugepages",surp:"Surplus Hugepages"}},disk:{add:"Add Disk",path:{label:"Path"},storageReserved:{label:"Storage Reserved"},allowScheduling:{label:"Scheduling",tooltip:"Disk {name} ({path}) scheduling is disabled"},evictionRequested:{label:"Eviction Requested"},forceFormatted:{label:"Force Formatted",toolTip:"Force formatted will clean up disk data, make sure you backup all available data to prevent data loss.",yes:"Yes (Ext4 File System)"},description:{label:"Description"},lastFormattedAt:{info:"The disk has already been force-formatted."},notification:{success:'Update host "{name}" storage configurations successfully.'},error:"Host has unready or unschedulable disks.",mounted:"Already Mounted",fileSystem:{info:"Current file system is {system}, You can format it manually.",formatting:"Disk is formatting, please wait."},tags:{label:"Disk Tags",addLabel:"Add Disk Tag"},conditions:"Conditions",storageAvailable:{label:"Storage Available"},storageScheduled:{label:"Storage Scheduled"},storageMaximum:{label:"Storage Maximum"},provisioner:"Provisioner",lvmVolumeGroup:{label:"Volume Group",create:"Create New..."},storage:{longhorn:{LonghornV1:{label:"Longhorn V1 (CSI)"},LonghornV2:{label:"Longhorn V2 (CSI)"}},lvm:{label:"LVM"}}},tags:{label:"Host Tags",addLabel:"Add Host Tag"},powerAction:{message:{success:"Perform host { name } { operation } successfully."}},ntp:{label:"NTP Server Addresses",tips:"You can configure multiple IPv4 addresses or host addresses.",placeholder:"e.g. IPv4",ntpSyncStatus:{isDisabled:"NTP is disabled. Please check the NTP service is active.",isUnsynced:"NTP is not synchronized with the NTP server {current}."}}},virtualMachine:{label:"Virtual Machines",osType:"OS Type",cpuModel:{label:"CPU Model",fetchError:"Failed to load CPU model configuration: {error}",optionLabel:"{modelName} ({count} {count, plural, one {node} other {nodes}})"},hotplug:{title:"Enable CPU and memory hotplug",tooltip:"The default maximum CPU and maximum memory are {hotPlugTimes} times based on CPU and memory.",restartVMMessage:"Restart action is required for the virtual machine configuration change to take effect"},hotUnplug:{actionLabel:"Detach",detachVolume:{title:"Are you sure that you want to detach volume {name}?",actionLabel:"Detach Volume",success:"Volume { name } is detached successfully."},ejectCdRomVolume:{title:"Are you sure that you want to eject image from device {name}?",actionLabel:"Eject Image",success:"Image from device { name } is ejected successfully."},detachNIC:{title:"Are you sure that you want to detach network interface {name}?",actionLabel:"Detach Network Interface",success:"The settings have been saved, but the network interface {name} will be detached only after the virtual machine is migrated."}},instance:{singleInstance:null,multipleInstance:null,single:{label:"Single Instance",nameLabel:"Name",host:{label:"Hostname",placeholder:"Default to the virtual machine name."}},multiple:{label:"Multiple Instance",nameNsDescription:"Name prefix for each instance",count:"Count",countTip:"Count should be between 1 and 10",nameLabel:"Name Prefix",host:{label:"Host Prefix Name",placeholder:"Default to the virtual machine name."}}},useTemplate:{label:"Use the virtual machine template:",template:{label:"Template"},version:{label:"Version"}},console:{novnc:"Open in WebVNC",serial:"Open in Serial Console"},promptRemove:{title:"Select the volume you want to delete:",deleteAll:"Delete All",tips:"Warn: The snapshots of the virtual machine will be deleted with virtual machine and the snapshots of volume will be deleted with volume."},restartTip:"{restart, select,\n true {Restart}\n other {Start}\n} the virtual machine now to take effect of the configuration changes.",runStrategy:"Run Strategy",maintenanceStrategy:{label:"Maintenance Strategy",options:{Migrate:"Migrate",ShutdownAndRestartAfterEnable:"Shutdown and Restart After Enable",ShutdownAndRestartAfterDisable:"Shutdown and Restart After Disable",Shutdown:"Shutdown"}},cpuPinning:{label:"Enable CPU Pinning",tooltip:"Enable CPU Pinning brings better performance and reduce latency for the virtual machine",restartVMMessage:"Changing the CPU Pinning setting requires a virtual machine reboot for the change to take effect",migrationMessage:"This virtual machine can only be migrated to a target node that has CPU Manager enabled, as CPU Pinning is configured."},restartNow:"{restart, select,\n true {Restart}\n other {Start}\n} Now",createSSHKey:"Create a New...",genericLoginError:"Authentication failed. Please re-log in and try again.",installAgent:"Install guest agent",enableUsb:"Enable USB Tablet",advancedOptions:{tpm:"Enable TPM",tpmPersistentState:"TPM Persistent State",cpuManager:{prefix:"You must enable CPU Manager for at least one node in",middle:"host page",suffix:"to enable CPU Pinning for VM"},efiEnabled:"Booting in EFI mode",efiPersistentState:"EFI Persistent State",secureBoot:"Secure Boot"},usbTip:"Provides an absolute pointer device which often helps with getting a consistent mouse cursor position in VNC.",sshTitle:"Add Public SSH Key",imageTip:"An external URL to the .iso, .img, .qcow2 or .raw that the virtual machine should be created from.",volume:{dragTip:"Drag and drop volumes, or use the volume's arrows, to change the boot order.",volumeTip:"The virtual machine only contains a CD-ROM volume. You may want to add additional disk volumes.",macTip:"MAC address as seen inside the guest system.",staticIpTip:"Static IP that will be stored to annotation static-ip.harvesterhci.io/{nic_name}.",volumeUpdate:"Set volume { name } successfully",type:"Type",size:"Size",edit:"Edit",bus:"Bus",readyToUse:"Ready To Use",bootOrder:"Boot Order",volume:"Volume",dockerImage:"Docker Image",addVolume:"Add Volume",addExistingVolume:"Add Existing Volume",addVmImage:"Add a Virtual Machine Image",addContainer:"Add Container",setFirst:"Set as root volume",saveVolume:"Update Volume",encryption:"Encryption",vmImageVolumeTip:"Disk size ({diskSize}) should greater than selected image virtual size ({imageVirtualSize})",lockTooltip:{all:"All volumes are encrypted.",partial:"Some volumes are encrypted."},title:{vmImage:"Image Volume",existingVolume:"Existing Volume",volume:"Volume",container:"Container"},unmount:{title:"Are you sure?",message:"Are you sure you want to unmount this volume?"},emptyImage:"No media"},network:{title:"Network",addNetwork:"Add Network",addPort:"Add Port"},cloudConfig:{title:"Cloud Configuration",createTemplateTitle:"Create {name}",createNew:"Create new...",cloudInit:{label:"Cloud Init",placeholder:"Select a template"},user:{label:"User Data Template",title:"User Data:",tip:"You can specify user data to configure an instance or run a configuration script during launch. If you launch more than one instance at a time, the user data is available to all the instances in that reservation. Learn more "},network:{label:"Network Data Template",title:"Network Data:",tip:"The network-data configuration allows you to customize the instance's networking interfaces by assigning subnet configuration, virtual device creation (bonds, bridges, VLANs) routes and DNS configuration. Learn more "}},sysprep:{title:"Windows Sysprep Configuration",description:"Configure Windows automated installation using autounattend.xml. The configuration will be stored in a Kubernetes Secret and mounted as a CD-ROM during installation. Learn more ",createNew:"Create new...",createNewTitle:"Create Windows Sysprep Template",xmlContent:"autounattend.xml content",secret:{label:"Windows Sysprep Template"},validation:{invalidXml:"Invalid XML syntax",invalidNamespace:"Invalid unattend.xml namespace. Expected 'urn:schemas-microsoft-com:unattend'"}},scheduling:{affinity:{anyNode:"Run virtual machine on any available node",schedulingRules:"Run virtual machine on node(s) matching scheduling rules",specificNode:"Run virtual machine on specific node - (Live migration is not supported)"},networkNotSupport:"Network not support schedule"},accessCredentials:{resetPwd:{label:"Add Basic Auth"},injectSSH:{label:"Add SSH Key",users:"Select Users",addUser:"Add User"},tips:"qemu-guest-agent must be installed to enable the accessing of credentials. The virtual machine needs to be restarted after credentials added. You need to be in the virtual machine to edit your password or remove an SSH-Key after deleting the credentials.",userTips:"The user to be added must already exist; otherwise, the credentials will not take effect.",duplicatedUser:"User already exists.",invalidUser:"Invalid Username."},input:{name:"Name",cpu:"CPU",maxCpu:"Maximum CPU",maxMemory:"Maximum Memory",memory:"Memory",image:"Image",sshKey:"SSHKey",sshKeyValue:"SSH-Key",MachineType:"Machine Type",username:"Username",password:"Password",reservedMemory:"Reserved Memory",customizeDisplayName:"Customize virtual machine display name",displayNamePlaceholder:"Virtual machine alias name",displayName:"Display Name"},filesystem:{description:"Harvester supports filesystem volumes for VM via virtiofs.",type:"Filesystem Type",volume:"Volume",resource:"Resource",add:"Add",mountBannerHint:"Please update the mount path (e.g. /mnt/appconfigfs) to your preferred location, then add the corresponding commands to the",mountBannerHintLink:"runcmd",mountBannerHintSuffix:"in Advanced tab User Data."},machineTypeTip:"Specify a processor architecture to emulate. To see a list of supported architectures, run: qemu-system-x86_64 -cpu ?",detail:{tabs:{overview:"Overview",details:"Details",environment:"Environment",events:"Events",migration:"Migration",console:"Console",networkInterfaces:"Network Interfaces",disks:"Disks",networks:"Networks",basics:"Basics",configurations:"Configurations",inventory:"Inventory",hostBasic:"Basic Attributes",instance:"Virtual Machines",monitor:"Monitor Data",keypairs:"SSH Keys",cloudConfig:"Cloud Configuration",metrics:"Virtual Machine Metrics"},details:{title:{vmDetails:"Virtual Machine Details",requirements:"Scheduling and resources requirements",services:"Services",users:"Logged in users"},name:"Name",totalSnapshotQuota:"Total Snapshot Quota",namespace:"Namespace",created:"Created",hostname:"Hostname",node:"Node",ipAddress:"IP Address",status:"Status",pod:"Pod",labels:"Labels",bootOrder:"Boot Order",annotations:"Annotations",CDROMs:"CD-ROMs",description:"Description",operatingSystem:"Operating System",template:"Template",kernelRelease:"Kernel Release",owner:"Owner",workloadProfile:"Workload Profile",nodeSelector:"Node Selector",flavor:"Flavor",tolerations:"Tolerations",dedicatedResources:"Dedicated Resources",down:"Virtual machine not running",affinityRules:"Affinity Rules",phase:"Phase",sourceNode:"Source Node",targetNode:"Target Node",started:"Started",ended:"Ended"},notAvailable:"Not available",GuestAgentNotInstalled:"Guest agent required",noOwner:"No Owner",events:{from:"Generated from",down:"No events in the past hour"},console:{down:"This virtual machine is down. Please start it to access its console.",shortcutKeys:"Shortcut Keys",customShortcutKeys:"Custom Shortcut Keys",management:"Management Shortcut Keys",record:{start:"Record",recording:"Recording",stop:"Stop Recording",tips:"Press the record button to capture your keyboard inputs.",send:"Send",preferredKeys:"Preferred Custom Shortcut Keys"}}},terminationGracePeriodSeconds:{label:"Termination Grace Period"},affinity:{addLabel:"Add Workload Selector",topologyKey:{placeholder:"topology.kubernetes.io/zone"},thisPodNamespace:"This virtual machine's namespace",matchExpressions:{inNamespaces:"Workloads in these namespaces"},namespaces:{label:"Namespaces"}},instanceLabels:{banner:"These labels are automatically synchronized to the virtual machine instance."},labels:{banner:"These key values are added as labels to the virtual machine."},annotations:{banner:"These key values are added as annotations to the virtual machine."}},volume:{label:"Volumes",tabs:{basics:"Basics",snapshots:"Snapshots",datasource:"Data Source",details:"Details",conditions:"Conditions"},size:"Size",volumeMode:"Volume Mode",accessModes:"Access Modes",createWithDataVolume:"Create with DataVolume",createWithDataVolumeTooltip:"Create Volume with Kubevirt/Containerized Data Importer way. It can fill accessMode/volumeMode automatically.",showAdvanced:"Show Advanced Options",hideAdvanced:"Hide Advanced Options",source:"Source",kind:"Kind",sourceOptions:{new:"New",vmImage:"Virtual Machine Image"},image:"Image",frontend:"Frontend",blockdev:"Block Device",attachedNode:"Attached Node",endpoint:"Endpoint",diskTags:"Disk Tags",nodeTags:"Node Tags",lastBackup:"Last Backup",lastBackupAt:"Last Backup At",replicasNumber:"Replicas Number",promptRemove:{tips:"Warn: The volume's snapshots will be deleted with this volume."},externalLink:{tips:"Check volume details"},rebuildingMessage:"Rebuilding: {percentage}%",longhorn:{disableResize:"Longhorn V2 volumes cannot be resized."}},image:{label:"Images",tabs:{basics:"Basics"},url:"URL",size:"Size",isEncryption:"Encryption",encryptionSecret:"Encryption Secret",virtualSize:"Virtual Size",urlTip:'Supports the raw and qcow2 image formats which are supported by qemu . Bootable ISO images can also be used and are treated like raw images.',fileName:"File Name",uploadFile:"Upload File",source:"Source Type",sourceType:{download:"URL",upload:"File",clone:"Clone",encrypt:"Encrypt",decrypt:"Decrypt"},sourceImage:"Source Image",cryptoOperation:"Crypto Operation",warning:{uploading:"{count, plural,\n=1 {1 image is uploading, please do not refresh or close the page.}\nother {{count} images are uploading, please do not refresh or close the page.}\n}",osUpgrade:{uploading:"{name} is uploading, please do not refresh or close the page."}},checksum:"Checksum",checksumTip:"Validate the image using the SHA512 checksum, if specified.",tooltip:{imported:"Created automatically by the vm-import-controller"},errors:{unsupportedBackend:"Unsupported backend type: {backend}"}},vmTemplate:{label:"Templates",tabs:{basics:"Basics"},nameNsDescription:{name:"Template Name"},tips:{notExistImage:{title:"Image {name} does not exist!",message:"Please select a new image."},notExistNode:{title:"Node {name} does not exist!",message:"Please select a new node."}}},upgradePage:{upgradeApp:"Upgrade Software",upgrade:"Upgrade",upgradeTip:"Please select the version you want to upgrade to",currentVersion:"CURRENT VERSION",versionLabel:"AVAILABLE COMPATIBLE VERSIONS",enableLogging:"Enable Logging",skipSingleReplicaDetachedVol:"Skip checking single-replica detached volumes",upgradeNode:"Upgrading Node",upgradeSysService:"Upgrading System Service",upgradeImage:"Download Upgrade Image",osUpgrade:"Cluster Upgrade",uploadNew:"Upload New Image",deleteHeader:"Please select an image to delete.",deleteExisting:"Delete Existing Image",selectExisting:"Select Existing Image",createRepository:"Creating Upgrade Repository",succeeded:"Succeeded",releaseTip:'Please read the upgrade documentation carefully. You can view details on the Harvester Release Notes .',checkReady:"I have read and understood the upgrade instructions related to this Harvester version.",pending:"Pending",upload:{duplicatedFile:"The file you are trying to upload already exists."},repoInfo:{upgradeStatus:"Upgrade Status",os:"OS",kubernetes:"Kubernetes",monitoringChart:"Monitoring Chart",harvesterChart:"Harvester Chart",success:"Success",fail:"Fail",ongoing:"On-going",downloadLog:"Download Log",logStatus:"Log Download Status"},dismissMessage:"Dismiss it",upgradeInfo:{warning:"WARNING",doc:'Read the documentation before starting the upgrade process. Ensure that you complete procedures that are relevant to your environment and the version you are upgrading to.',tip:"Unmet system requirements and incorrectly performed procedures may cause complete upgrade failure and other issues that require manual workarounds.",moreNotes:"For more details about the release notes, please visit -"}},schedule:{label:"Virtual Machine Schedules",createTitle:"Create Schedule",createButtonText:"Create Schedule",scheduleType:"Virtual Machine Schedule Type",cron:{label:"Cron Schedule",editButton:"Edit"},detail:{namespace:"Namespace",sourceVM:"Source Virtual Machine"},tabs:{basic:"Basic",backups:"Backups",snapshots:"Snapshots"},message:{noSetting:{suffix:"before creating a backup schedule"}},retain:{label:"Retain",count:"Count",tooltip:"Number of up-to-date VM backups to retain. Maximum to 250, minimum to 2."},maxFailure:{label:"Max Failure",count:"Count",tooltip:"Max number of consecutive failed backups that could be tolerated. If reach this threshold, Harvester controller will suspend the schedule job. This value should less than retain count"},virtualMachine:{title:"Virtual Machine Name",placeholder:"Select a virtual machine"},type:{snapshot:"Snapshot",backup:"Backup"}},backup:{label:"Virtual Machine Backups",createText:"Restore Backup",title:"Restore Virtual Machine",refreshInterval:{label:"Refresh Interval",tip:"The interval for the backup target to sync data to harvester cluster. Set to 0 to disable refresh mechanism."},backupTargetTip:"The endpoint used to access the backupstore. NFS and S3 are supported.",message:{noSetting:{prefix:"You must configure the backup target",middle:"setting",suffix:"before creating a new backup."},errorTip:{prefix:"Backup target value in",middle:"setting",suffix:"is invalid, error: "},viewSetting:{prefix:"Click",middle:"here",suffix:"to view the backup configuration."},testConnect:{actionLabel:"Test connection",waitingLabel:"Testing connection...",successLabel:"Connection tested",successMessage:"Harvester can successfully connect to the endpoint {endpoint}"}},restore:{backup:"Backup",deletePreviousVolumes:"Delete Previous Volumes",createNew:"Create new",replaceExisting:"Replace existing",virtualMachineName:"Virtual Machine Name",keepMacAddress:"Keep MAC Address",haltAfterRestore:"Keep powered off after restore"},matchTarget:"The current backup target does not match the existing one.",progress:{details:"Volume details",tooltip:{starting:"Backup initiating",progress:"Backup in progress",complete:"Backup completed"}}},restore:{progress:{details:"Volume details",tooltip:{starting:"Restore initiating",progress:"Restore in progress",complete:"Restore completed"}}},subnet:{cidrBlock:{tooltip:"The subnet range in CIDR notation. Note that the CIDR blocks of different Subnets' within the same VPC cannot overlap.",label:"CIDR Block",placeholder:"e.g. 172.20.0.0/16"},protocol:{label:"Protocol"},provider:{tooltip:"Network provider for this Subnet. Must be one of the Virtual Machine Networks in OverlayNetwork type.",label:"Provider"},vpc:{label:"Virtual Private Cloud"},gateway:{label:"Gateway IP",placeholder:"e.g. 172.20.0.1"},vlan:{label:"VLAN",placeholder:"Select a VLAN"},dhcp:{label:"Dynamic Host Configuration Protocol (DHCP)",v4Options:"DHCPV4Options",v6Options:"DHCPV6Options",placeholder:"key1=value1, key2=value2",dhcpOptionBanner:'DHCP options is a key/value string concatenate with comma. For more detail, please refer to KubOVN document ',tooltip:"Enable DHCP server for this subnet. When enabled, VMs can automatically obtain IP addresses from this subnet."},externalConnectivity:{label:"NAT Outgoing",tooltip:"Enable NAT for VMs using this subnet to access external networks."},private:{label:"Private Subnet",tooltip:"Enable network isolation for this Subnet. When enabled, VMs can only communicate within this subnet, even if other subnets exist under the same VPC."},allowSubnet:{label:"Allow Subnets",tooltip:"You can specify certain subnets which can communicate with this subnet.",addSubnet:"Add Allow Subnet",placeholder:"e.g. 172.16.0.0/16"},excludeIPs:{tooltip:"The IP address list to reserve from automatic assignment. The gateway IP address is always excluded and will be automatically added to the list.",placeholder:"single IP or 192.168.0.100..192.168.0.200"},acl:{label:"Access Control List",tooltip:"The ACL to apply to this Subnet. Must be one of the ACLs in the same namespace.",action:{label:"Action",placeholder:"Please select an action"},direction:{label:"Direction",placeholder:"Please select a direction"},addRule:"Add Rule",priority:{label:"Priority",placeholder:"Please select a priority"},match:{label:"Match",placeholder:"e.g. ip4.dst == 10.10.0.2"},banner:'The supported field in ACL match can refer to KubeOvn Subnet ACL document '}},vpc:{viewTopology:"Topology",topology:{loading:"Loading topology...",empty:"No resources found",visibility:{vpc:"VPC",subnets:"Subnets",overlayNetworks:"Overlay Networks",vms:"VMs"},labels:{cidr:"CIDR",provider:"Provider",type:"Type",clusterNetwork:"Cluster Network",network:"Network",subnet:"Subnet",ip:"IP",mac:"MAC",peering:"Peering"}},noAddonEnabled:{prefix:"The kubeovn-operator add-on is not enabled, click",middle:"here",suffix:"to enable the add-on to successfully create VPC and subnet."},label:"Virtual Private Cloud",noChild:"There is no subnet defined in this Virtual Private Cloud.",createSubnet:"Create Subnet",staticRoutes:{label:"Static Routes",cidr:{label:"CIDR",placeholder:"e.g. 172.16.0.0/16"},nextHopIP:{tooltip:"The localConnectIP on the other end of the peering VPC.",label:"Next Hop IP",placeholder:"e.g. 169.254.0.2"}},vpcPeerings:{label:"VPC Peerings",localConnectIP:{tooltip:"The designated IP address in CIDR notation of the VPC peering endpoint. Note that both IP addresses (for the VPC and the other VPC) should belong to the same subnet range and should not conflict with the cidrBlock in any existing subnets.",label:"Local Connect IP",placeholder:"e.g. 169.254.0.1/16"},remoteVpc:{label:"Remote VPC"},infoBanner:'The static route destination CIDR must cover all subnets CIDR from remote VPC Peer. Read VPC Peering Configuration Examples for more information.'}},natGateway:{label:"Gateways",internalTenantNetwork:{label:"Internal Tenant Network",placeholder:"Select a Virtual Machine Network"},vpc:{label:"VPC",placeholder:"Select a VPC"},subnet:{label:"Subnet",placeholder:"Select a subnet"},lanIp:{label:"LAN IP",placeholder:"Enter LAN IP"},externalSubnets:{label:"External Subnets",addLabel:"Add",placeholder:"Select a subnet"}},externalIP:{label:"External IPs",natGateway:{label:"VpcNatGateway",placeholder:"Select a VpcNatGateway"},externalSubnet:{label:"External Subnet",placeholder:"Select an external subnet"},v4ip:{label:"V4 IP",placeholder:"public ip from external subnet"}},snat:{label:"Source Rules",eip:{label:"EIP",placeholder:"Select an external IP"},internalCIDR:{label:"Internal CIDR",placeholder:"internal subnet CIDR"}},dnat:{label:"Destination Rules",eip:{label:"EIP",placeholder:"Select an external IP"},externalPort:{label:"External Port",placeholder:"port number"},internalIp:{label:"Internal IP",placeholder:"internal IP address"},internalPort:{label:"Internal Port",placeholder:"port number"},protocol:{label:"Protocol",placeholder:"Select protocol (tcp or udp)"}},providerNetwork:{label:"Provider Networks",defaultInterface:{label:"Default Interface",placeholder:"Select the interface the same as master interface of external overlay network"},customInterfaces:{label:"Custom Interfaces",addLabel:"Add Custom Interface",interface:{label:"Network Interface",placeholder:"e.g. eth2"},nodes:{label:"Nodes",addLabel:"Add Node",placeholder:"Select a node"}},excludedNodes:{label:"Excluded Nodes",addLabel:"Add Excluded Node",placeholder:"Select node to exclude from this provider network"}},vlanNetwork:{label:"VLANs"},vlan:{id:{label:"VLAN ID",placeholder:"e.g. 1-4094"},provider:{label:"Provider Network",placeholder:"Select a provider network"}},networkPolicy:{label:"Policies",banner:'The network policies must be used for VMs attached to overlay networks. Please read the harvester document how the network policy works.'},network:{label:"Virtual Machine Networks",tabs:{basics:"Basics",layer3Network:"Route",nic:"Network Interface Card"},clusterNetwork:{label:"Cluster Network",create:"Create a new cluster network",toolTip:"Define your custom cluster scope network name",createPlaceholder:"Input a new cluster network name",selectOrCreatePlaceholder:"Select or create a new cluster network",selectPlaceholder:"Select a cluster network"},layer3Network:{mode:{label:"Mode",auto:"Auto (DHCP)",manual:"Manual"},serverIPAddr:{label:"DHCP Server IP"},gateway:{label:"Gateway",placeholder:"e.g. 172.16.0.1"},cidr:{label:"CIDR",placeholder:"e.g. 172.16.0.1/24"}}},sshKey:{label:"SSH Keys",keypair:"SSH Key",tabs:{basics:"Basics"}},setting:{label:"Settings",tabs:{advanced:"Advanced",ui:"UI"},validation:{physicalNIC:"DefaultPhysicalNIC"},placeholder:{accessKeyId:"Specify your access key ID",secretAccessKey:"Specify your secret access key",cert:"Upload a self-signed SSL certificate"},noSearchMatch:"No settings match your search.",vlanChangeTip:"The newly modified default network interface only applies to newly added nodes, not existing ones.",defaultPhysicalNIC:"Default Network Interface",modifiedMessage:"Settings that have been customized from default settings are tagged with 'Modified'.",percentTip:"The value in parentheses represents the distribution percentage of the network interface on all hosts. If an interface less than 100% is selected, the user needs to manually specify the network interface on the host where the vlan network configuration fails.",message:{ca:{prefix:"Click",middle:"here",suffix:"to add a custom certificate."}},sslCertificates:{publicCertificate:"Public Certificate",privateKey:"Private Key",ca:"CA"},rancherCluster:{kubeConfig:"Rancher KubeConfig",removeUpstreamClusterWhenNamespaceIsDeleted:"Remove Upstream Cluster When Namespace Is Deleted"},clusterPodSecurityStandard:{whitelistedNamespaces:{label:"Whitelisted Namespaces"},privilegedNamespaces:{label:"Privileged Namespaces"},restrictedNamespaces:{label:"Restricted Namespaces"}},storageNetwork:{range:{placeholder:"e.g. 172.16.0.0/24",label:"IP Range",invalid:'"Range" is invalid.'},clusterNetwork:"Cluster Network",vlan:"VLAN ID",exclusiveVlan:"Exclusive VLAN",exclude:{label:"Exclude IPs",placeholder:"CIDR format, e.g. 172.16.0.10/32",invalid:'"Exclude list" is invalid.',addIp:"Add Exclude IP"},warning:"WARNING: Any change to storage-network requires shutting down all virtual machines before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.",tip:'Specify an IP range in the IPv4 CIDR format. Number of IPs Required = Number of Nodes * 2 + Number of Disks * 2 + Number of Images to Download/Upload . For more information about storage network settings, see the documentation .'},rwxNetwork:{warning:"WARNING: Any change to rwx-network requires longhorn RWX volumes detached before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.",shareStorageNetwork:"Share Storage Network",dedicatedRwxNetwork:"Dedicated RWX Network",shareStorageNetworkWarning:"The rwx-network is governed by storage-network, and changes here won't take effect until share-storage-network is set to false."},vmForceDeletionPolicy:{period:"Period",vmMigrationTimeout:"VM Migration Timeout"},vmMigrationNetwork:{parseError:"Failed to parse existing configuration.",fetchError:"Failed to load required network resources: {error}. Please refresh the page or try again later.",clusterNetwork:"Cluster Network",vlan:"VLAN ID",range:{placeholder:"e.g. 172.16.0.0/24",label:"IP Range",invalid:'"Range" is invalid.'},exclude:{label:"Excluded IPs",placeholder:"e.g. 172.16.0.1/32",invalid:'"Exclude list" is invalid.',addButton:"Add Exclude IP"}},ratio:"Ratio",autoRotateRKE2Certs:{expiringInHours:"Expiring in"},httpProxy:{warning:'WARNING: If you configure "http-proxy" and "https-proxy", you must also put Harvester node's CIDR into "no-proxy", otherwise the Harvester cluster will be broken.'},supportBundleImage:{imagePullPolicy:"Pull Policy",repo:"Repository",tag:"Tag"},csiDriverConfig:{provisioner:"Provisioner",volumeSnapshotClassName:"Volume Snapshot Class Name",backupVolumeSnapshotClassName:"Backup Volume Snapshot Class Name"},csiOnlineExpandValidation:{provisioner:"Provisioner",value:"Value",invalidJsonFormat:"Configuration value is not a valid JSON format: {error}",failedToLoadDrivers:"Failed to load CSI drivers. Error: {error}"},containerdRegistry:{mirrors:{mirrors:"Mirrors",registryName:"Registry Name",endpoints:"Endpoints",rewrite:{rewrite:"Rewrite",addRewrite:"Add Rewrite"},addMirror:"Add Mirror"},configs:{configs:"Configurations",registryEDQNorIP:"Registry FDQN or IP",registryPlaceholder:"myregistry.local:5000",username:"Username",password:"Password",auth:"Auth",identityToken:"Identity Token",insecureSkipVerify:"InsecureSkipVerify",addConfig:"Add Configuration"}},upgrade:{unknownImageName:"Image name is not found.",imageUrl:"Please input a valid image URL.",chooseFile:"Please select to upload an image.",checksum:"Checksum",networkError:"Unable to upload the image. Resolve network issues that may have occurred and try again.",cancelUpload:"Cancelled the image upload.",uploadSuccess:"{name} uploaded successfully. Press Upgrade button to start the cluster upgrade process.",deleteImage:"Please select an image to delete.",deleteSuccess:"{name} deleted successfully.",imagePreloadStrategy:"Image Preload Strategy",nodeUpgradeOption:"Node Upgrade Option",restoreVM:"Restore VM",strategy:"Strategy",pauseNodes:"Pause Nodes",strategyType:"Strategy Type",concurrency:"Concurrency"},harvesterMonitoring:{label:"Harvester Monitoring",section:{prometheus:"Prometheus",prometheusNodeExporter:"Prometheus Node Exporter",grafana:"Grafana",alertmanager:"Alertmanager"},tips:{scrape:"Interval between consecutive scrapes",evaluation:"Interval between consecutive evaluations",retention:"How long to retain metrics",retentionSize:"Maximum size of metrics"}},clusterRegistrationUrl:{url:"URL",insecureSkipTLSVerify:"Insecure Skip TLS Verify",tip:{prefix:'Harvester secures cluster registration via TLS by default. If opt out "Insecure Skip TLS Verify", you must provide custom CA certificates using the',middle:"additional-ca",suffix:"setting."},message:"To completely unset the imported Harvester cluster, please also remove it on the Rancher Dashboard UI via the Virtualization Management page."},ntpServers:{isNotIPV4:"The address you entered is not IPv4 or host. Please enter a valid IPv4 address or a host address.",isDuplicate:"There are duplicate NTP server configurations."},instanceManagerResources:{parseError:"Failed to parse configuration: {error}",v1:"V1 Data Engine",v2:"V2 Data Engine"},kubevirtMigration:{parseError:"Failed to parse configuration: {error}",parallelMigrationsPerCluster:"Parallel Migrations Per Cluster",parallelOutboundMigrationsPerNode:"Parallel Outbound Migrations Per Node",bandwidthPerMigration:"Bandwidth Per Migration",bandwidthPerMigrationTooltip:"0 is KubeVirt default, representing unlimited bandwidth",completionTimeoutPerGiB:"Completion Timeout Per GiB",progressTimeout:"Progress Timeout",allowAutoConverge:"Allow Auto Converge",allowPostCopy:"Allow Post Copy",unsafeMigrationOverride:"Unsafe Migration Override",allowWorkloadDisruption:"Allow Workload Disruption",disableTLS:"Disable TLS",matchSELinuxLevelOnMigration:"Match SELinux Level On Migration"}},cloudTemplate:{label:"Cloud Configuration Templates",templateType:"Template Type",userData:"User Data",networkData:"Network Data"},support:{title:"Harvester Support",kubeconfig:{title:"Download KubeConfig",titleDescription:"Download kubeconfig for debugging."},internal:{rancher:{title:"Access Embedded Rancher UI",titleDescription:'You can only use the embedded Rancher UI for debugging and validation purposes. For more information about how Harvester integrates with Rancher, see the documentation .'},longhorn:{title:"Access Embedded Longhorn UI",titleDescription:"We only support to use the embedded Longhorn UI for debugging and validation purpose."}},community:{learnMore:"Find out more about SUSE Harvester support",pricing:"Contact us for pricing"}},namespace:{label:"Namespaces"},projectNamespace:{label:"Projects/Namespaces"},vip:{namespace:{label:"Namespace"},cidr:{label:"CIDR/IP Range",invalid:'"CIDR/IP Range" is invalid.',toolTip:"We can apply multiple pools or ranges by separating them with commas. For example: 192.168.0.200/30,192.168.0.200/29 or 192.168.0.10-192.168.0.11"},add:{label:"Add IP Pools"}},sslParameters:{protocols:{label:"Protocols"},ciphers:{label:"Ciphers"}},monitoring:{configuration:{label:"Configuration"},alertmanagerConfig:{label:"Alertmanager Configurations",diabledMonitoringTips:{prefix:"Enable the",middle:"monitoring",suffix:"add-on first."},diabledAlertingTips:{prefix:"Enable",middle:"Alertmanager",suffix:"for configuration to take effect."},disabledAddon:{prefix:"The monitoring add-on is disabled, click",middle:"here",suffix:"to enable it."}}},logging:{configuration:{section:{fluentbit:"Fluentbit",fluentd:"Fluentd"}},clusterFlow:{label:"Cluster Flows"},clusterOutput:{label:"Cluster Outputs"},flow:{label:"Flows"},output:{label:"Outputs"},diabledTips:{prefix:"Enable",middle:"logging",suffix:"for configuration to take effect."}},snapshot:{totalSnapshotSize:"Total Snapshot Size",label:"Volume Snapshots",targetVolume:"Original Volume",size:"Size",image:"Image"},vmSnapshot:{label:"Virtual Machine Snapshots",createText:"Restore Snapshot",title:"Restore Virtual Machine",snapshot:"Snapshot"},storage:{label:"Storage",useDefault:"Use the default storage",volumeEncryption:"Volume Encryption",secret:"Secret",volumeExpansionCheckbox:"Enable Expansion",migratable:{label:"Migratable"},numberOfReplicas:{label:"Number Of Replicas"},staleReplicaTimeout:{label:"Stale Replica Timeout"},nodeSelector:{label:"Host Selector"},diskSelector:{label:"Disk Selector"},storageClass:{label:"Storage Class",longhorn:{v1:{label:"Longhorn V1 (CSI)"},v2:{label:"Longhorn V2 (CSI)"},versionTooltip:"Longhorn V2 is disabled for this node."},lvm:{label:"LVM"}},title:"Storage Classes",customize:{volumeBindingMode:{later:"Bind and provision a persistent volume once a virtual machine using the PersistentVolumeClaim is created"}},parameters:{numberOfReplicas:{label:"Number Of Replicas"},staleReplicaTimeout:{label:"Stale Replica Timeout"},diskSelector:{label:"Disk Selector","no-options":"No available tags, please add in the `Host > Storage` page"},nodeSelector:{label:"Node Selector","no-options":"No available tags, please add in the `Host > Storage` page"},migratable:{label:"Migratable"},lvmVolumeGroupType:{label:"Volume Group Type"},lvmVolumeGroup:{label:"Volume Group Name","no-options":"No available Volume Groups, please add in the `Host > Storage` page"},node:{label:"Node"}},allowedTopologies:{title:"Allowed Topologies",tooltip:"Allowed Topologies helps scheduling virtual machines on hosts which match all of below expressions."},internal:{label:"Internal Storage Class",cannotDeleteTooltip:"Internal storage class volumes cannot be deleted",cannotDeleteOrDefaultTooltip:"Internal storage classes cannot be deleted or set as default"},cdiSettings:{label:"CDI Settings",volumeModeAccessModes:{label:"Volume Mode / Access Modes",tooltip:"Specifies the default volume mode and access modes.",add:"Add",volumeMode:"Volume Mode",accessModes:{label:"Access Modes"}},volumeSnapshotClass:{label:"Volume Snapshot Class",tooltip:"Sets the Volume Snapshot Class name to be used when taking snapshots of PVCs under this StorageClass."},cloneStrategy:{label:"Clone Strategy",tooltip:"Defines the clone strategy to use for volumes created with this StorageClass.",copy:"Copy",snapshot:"Snapshot",csiClone:"CSI Clone"},fileSystemOverhead:{label:"File System Overhead",tooltip:"Specifies the percentage of filesystem overhead to consider when calculating PVC size.",placeholder:"e.g. 0.05 (up to 3 decimal places, between 0 and 1)"}}},vlanConfig:{title:"Network Configuration",createNetworkConfig:"Create Network Configuration",action:{migrate:"Migrate"},titles:{nodeSelector:"Node Selector",uplink:"Uplink",bondOptions:"Bond Options",attributes:"Attributes",host:"Selected Hosts"},scheduling:{affinity:{allNodes:"Select all nodes",specificNode:"Select specific node",schedulingRules:"Select node(s) matching rules"}},uplink:{nics:{label:"NIC",addLabel:"Add NIC",overlayWarning:"The NIC selected here must match the NIC provided in the provider network.",placeholder:"Select a NIC that is available on all the selected nodes",validate:{available:'NIC "{nic}" is not available on the selected nodes'}},linkAttributes:{mtu:{label:"MTU"}},bondOptions:{mode:{label:"Mode"},miimon:{label:"Miimon",tooltip:"Miimon specifies the MII link monitoring frequency in milliseconds. -1 means to keep the original value."}}},nodeSelector:{matchingNodes:{matchesSome:'{matched, plural,\n =0 {Matches 0 of {total, number} Nodes.}\n =1 {Matches 1 of {total, number} Nodes: "{sample}"}\n other {Matches {matched, number} of {total, number} existing Nodes, including "{sample}"}\n}'}}},vlanStatus:{vlanConfig:{label:"Network Configuration",l2VlanMode:{access:"Access",trunk:"Trunk",label:"Mode"},vlanTrunk:{minId:"Minimum VLAN ID",maxId:"Maximum VLAN ID",add:"Add VLAN Trunk"}}},clusterNetwork:{title:"Cluster Network Configuration",create:{button:{label:"Create a Cluster Network"}},clusterNetwork:"There are no network configurations defined.",mgmt:"mgmt is a built-in cluster management network and does not support any additional network configurations.",notExist:'Cluster Network "{ clusterNetwork }" does not exist',notReady:'Cluster Network "{ clusterNetwork }" is not ready'},addons:{descriptions:{"harvester-system/vm-import-controller":"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.","harvester-system/pcidevices-controller":"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machine and guest clusters.","cattle-logging-system/rancher-logging":"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.","harvester-system/rancher-vcluster":"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.","cattle-monitoring-system/rancher-monitoring":"rancher-monitoring is an add-on that collects Harvester cluster and virtual machine metrics and allows you to view the metrics on an embedded dashboard and send alert(s) to remote servers.","vm-import-controller":"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.","pcidevices-controller":"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machines and guest clusters.","nvidia-driver-toolkit":"nvidia-driver-toolkit is an add-on to enable vGPU devices and assign them to Harvester virtual machines.","rancher-logging":"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.","rancher-monitoring":"rancher-monitoring is an add-on to collect Harvester cluster and virtual machine metrics, view them on the embedded dashboard, and send alert(s) to remote servers.","rancher-vcluster":"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.","harvester-seeder":"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.","harvester-system/harvester-seeder":"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.","harvester-csi-driver-lvm":"harvester-csi-driver-lvm is an add-on allowing users to create PVC through the LVM with local devices.",descheduler:"The virtual machine auto balance optimizes workload scheduling by evicting pods that are not optimally placed according to administrator-defined policies."},vmMigration:{generic:{unknown:"Unknown",identifier:"Identifier",podNetwork:"Pod Network",usedBy:"Used by:",vlan:"VLAN {id}",vCpu:"{count} vCPU",memoryGb:"{value} GB",memoryTb:"{value} TB",elapsed:{hoursAndMinutes:"{hours} {hours, plural, one {hour} other {hours}} and {minutes} {minutes, plural, one {minute} other {minutes}}",hours:"{hours} {hours, plural, one {hour} other {hours}}",minutes:"{minutes} {minutes, plural, one {minute} other {minutes}}"}},errors:{failedLoadPlans:"Failed to load migration plans",failedLoadVms:"Failed to load virtual machines",failedRefreshVms:"Failed to refresh virtual machines",failedLoadProviders:"Failed to load providers",failedLoadProvider:"Failed to load provider: {error}",failedResolveDetails:"Failed to resolve network and datastore details",failedDecodeCredentials:"Failed to decode provider credentials",connectionFailed:"Connection failed",providerNotReady:"Provider not ready"},labels:{dashboard:"Migration Overview",provider:"Providers",networkMap:"Network Maps",storageMap:"Storage Maps",plan:"Migration Plans",migration:"Migrations"},providerWizard:{title:"Create Provider",editTitle:"Edit Provider"},wizard:{title:"VM Migration",steps:{configureProvider:{label:"Provider",description:"Configure Provider"},selectVms:{label:"VMs",description:"Select VMs"},configureMappings:{label:"Mappings",description:"Define Mappings"},reviewMigration:{label:"Migration Plan",description:"Review Migration Plan"}}},fields:{username:"Username",password:"Password"},configureProvider:{title:"Configure Provider",description:"Connect to your VMware vCenter or ESXi host to discover virtual machines for migration",connectionDetails:"Connection Details",providerSelect:"Provider",createNew:"Create new provider",requirementsTitle:"Requirements",requirementsText:"To migrate virtual machines from VMware, you will need a vCenter Server running version 6.5 or higher with a user account that has at least read permissions, and the source environment must be network-accessible from Rancher.",name:"Name",urlLabel:"vCenter/ESXi URL",urlPlaceholder:"https://vcenter.example.com/sdk",urlHint:"Enter the full URL including https://",skipSsl:"Skip SSL certificate verification",skipSslHint:"Not recommended for production environments",testConnection:{action:"Test Connection",success:"Connection successful",error:"Connection failed",waiting:"Testing connection..."},testSuccess:"Connection test passed",testFailed:"Connection test failed",testMissingFields:"Please fill in all required fields before testing",testTimeout:"Connection test timed out — the provider did not report a status in time",save:"Save Provider and Continue",saveExisting:"Check Provider and Continue"},selectVms:{title:"Select Virtual Machines",description:"Select the virtual machines you want to migrate from the source provider",discovered:"{count} VMs discovered from",lastSynced:"Last synced {time} ago • ",refreshNow:"Refresh now",availableVms:"Available Virtual Machines",selected:"selected",saveSelection:"Save Selection and Continue",selectAllBanner:{pageOnly:"Your current selection includes only VMs currently shown on the page.",selectAll:"Select all {count} VMs from this provider",allSelected:"Your current selection includes all VMs.",clearSelection:"Clear Selection"},manualEntry:{title:"Add Virtual Machines",description:"No VMs were discovered from the provider inventory. Add VMs manually by entering their IDs and names.",vmId:"VM ID",vmIdPlaceholder:"e.g. vm-60527",add:"Add",added:"VMs added"},columns:{vmName:"VM Name",vmId:"VM ID",os:"Operating System",resources:"Resources",powerState:"Power State",network:"Network",datastore:"Datastore"}},dashboard:{title:"Virtual Machine Migration Overview",description:"Migrate virtual machines from VMware vSphere to Harvester using cold migration for data consistency. Create a migration plan to select VMs, map networks and storage, and prepare a migration to Harvester.",createPlan:"Create Migration",tableTitle:"Migrations",columns:{status:"Status",plan:"Migration Plan",progress:"Progress",mappings:"Mappings",duration:"Duration"},progress:{failed:"Failed",migration:"Migration",initializingMigration:"Initializing migration",finishedSuccessfully:"Finished Successfully",step:"Step {index}",vmCount:"{count} VMs",vmId:"id: {id}"}},configureMappings:{title:"Set Mappings",description:"Map VMware networks and datastores to Harvester and Longhorn target resources",save:"Save Mappings and Continue",noTemplate:"Start from scratch",removeMap:"Remove Map",networkMapping:{title:"Network Mapping",description:"Map VMware port groups to Harvester networks",placeholder:"Choose a Harvester network",template:"Use existing network mapping as template",options:{podNetworking:"Management Network",ignored:"Ignored"}},storageMapping:{title:"Storage Mapping",description:"Map VMware datastores to Harvester storage classes",placeholder:"Choose a Longhorn Storage Volume",template:"Use existing storage mapping as template"}},reviewMigration:{title:"Review Migration Plan",description:"Confirm your migration settings before starting the transfer of VMs to the target cluster.",planName:"Name",planNamePlaceholder:"e.g. my-migration-plan",migrationDetails:"Migration Details",totalVms:"Total VMs",vcpu:"vCPU",memory:"Memory",storage:"Storage",source:"Source",targetNamespace:"Target Namespace",migrationMode:"Migration Mode",coldMigration:"Cold Migration",virtualMachines:"Virtual Machines",warningTitle:"Cold Migration Warning",warningMessage:"All source VMs will be powered off, and downtime will occur during migration. Plan your maintenance window accordingly and notify relevant stakeholders",startMigration:"Start Migration Plan"},plan:{states:{error:"Error",canceled:"Canceled",inProgress:"In Progress",active:"Succeeded"},actions:{start:"Start",restart:"Restart",stop:"Stop"}},deleteDialog:{warning:"Deleting this migration plan will also delete the following related resources"}},vmImport:{titles:{basic:"Basic",auth:"Authentication",pvc:"Volume",networking:"Network Mapping",advanced:"Advanced"},labels:{vmimport:"Virtual Machine Import",vmimportSourceVMWare:"Source VMWare",vmimportSourceOpenStack:"Source OpenStack",vmimportSourceOVA:"Source OVA"},fields:{sourceProvider:"Source Provider Type",sourceCluster:"Source Cluster",vmName:"VM Name",targetStorageClass:"Target Storage Class",sourceNetwork:"Source Network Name",destNetwork:"Destination Network",interfaceModel:"Interface Model",folder:"Folder",diskBus:"Default Disk Bus",defaultInterface:"Default Network Interface",skipPreflight:"Skip Preflight Checks",forcePowerOff:"Force Power Off Source VM",username:"Username",password:"Password",caCert:"CA Certificate (PEM)",selectSecret:"Select Secret",createSecret:"Create New Credentials",useSecret:"Use Existing Secret",none:"None (Public URL)"},placeholders:{selectCluster:"Select a cluster...",selectProviderFirst:"Select a provider type first",matchSource:"Must match the name in the source cluster",folderExample:"e.g. /Datacenters/DC1/vm",caCert:"-----BEGIN CERTIFICATE----- ..."},options:{useDefault:"Use Default"},actions:{addNetwork:"Add Network Mapping",remove:"Remove"},errors:{rfc1123:'Invalid format. Name must be lowercase, alphanumeric, and cannot contain spaces (e.g. "my-vm-1"). If your Source VM name does not match this, you must rename it on the Source cluster first.',networkMappingRequired:"Every Network Mapping row must have a Source and Destination selected."},openstack:{fields:{endpoint:"Identity Service Endpoint",region:"Region",projectName:"Project Name",domainName:"Domain Name",retryCount:"Upload Image Retry Count",retryDelay:"Upload Image Retry Delay"},placeholders:{endpoint:"e.g. https://devstack/identity",region:"e.g. RegionOne",projectName:"e.g. admin",domainName:"e.g. default",retryCount:"Default: 30",retryDelay:"Default: 10"}},vmware:{fields:{endpoint:"vCenter Endpoint",datacenter:"Datacenter"},placeholders:{endpoint:"e.g. https://vscim/sdk",datacenter:"e.g. DC0"},tooltips:{datacenter:"The exact name of the Datacenter object in vCenter"}},ova:{fields:{url:"URL",httpTimeout:"HTTP Timeout"},placeholders:{url:"e.g. https://download.example.com/images/my-vm.ova",httpTimeout:"Default: 600"}}},rancherVcluster:{accessRancher:"Access the Rancher Dashboard",hostname:"Hostname",rancherVersion:"Rancher Version",password:"Bootstrap Password"},switchFailed:"{action} {name} failed!",nvidiaDriverToolkit:{titles:{basic:"Controller",image:"Image",driver:"Driver"},image:{tag:"Image Tag",repository:"Image Repository"},driver:{location:"Driver Location"},enable:{title:"Enable NVIDIA Driver Toolkit"},parsingSpecError:"The field 'spec.valuesContent' has invalid format."},usbController:{titles:{basic:"Basic"}}},loadBalancer:{label:"Load Balancers",tabs:{basic:"Basic",listeners:"Listeners",healthCheck:"Health Check",backendServer:"Backend Server Selector"},workloadType:{label:"Workload Type",options:{cluster:"Guest Kubernetes Cluster",vm:"Virtual Machine"}},ipam:{label:"IPAM",options:{dhcp:"DHCP",pool:"Pool"}},ipPool:{label:"IP Pool",options:{none:"Auto (Select IP Pool automatically)"}},listeners:{name:{label:"Name"},protocol:{label:"Protocol"},port:{label:"Port"},backendPort:{label:"Backend Port",placeholder:"e.g. 80"}},backendServerSelector:{matchingVMs:{matchesSome:'{matched, plural,\n =0 {Matches 0 of {total, number} virtual machines in the namespace where the load balancer is.}\n =1 {Matches 1 of {total, number} virtual machines in the namespace where the load balancer is: "{sample}"}\n other {Matches {matched, number} of {total, number} existing virtual machines in the namespace where the load balancer is, including "{sample}"}\n}'}},backendServers:{label:"Backend Servers"},healthCheck:{warning:{portInUse:"Warning, the Backend Port {port} is in use in Health Check settings. If you need to update the port, update the Health Check settings accordingly."}}},ipPool:{label:"IP Pools",network:{label:"Virtual Machine Network"},tabs:{range:"Range",scope:"Scope",selector:"Selector"},subnet:{label:"Subnet"},startIP:{label:"Start IP"},endIP:{label:"End IP"},gateway:{label:"Gateway"},namespace:{label:"Namespace"},project:{label:"Project"},guestCluster:{label:"Guest Kubernetes Cluster"},availableIP:{label:"Available IP Count"},scope:{label:"Scope",addLabel:"Add Scope"},priority:{label:"Priority"},cidr:{addLabel:"Add CIDR"},range:{addLabel:"Add Range"}},hostNetworkConfig:{label:"Host Networks",mode:{label:"Mode"},tabs:{mode:"Mode",nodeSelector:"Node Selector"},nodeSelector:{addButton:"Add Node Selector"},underlay:{label:"Underlay",tooltip:"Allow this interface to act as the underlay for VM overlay networks.",conflict:"`{name}` host network config already has underlay enabled. Only one underlay is allowed in the cluster.",noKubeovn:{prefix:"The kubeovn-operator add-on is not enabled. Click",middle:"here",suffix:"to enable the add-on for overlay networking."}},vlanID:{label:"VLAN ID"},ipRange:{label:"IP Range ({node})",placeholder:"e.g. 192.168.1.10/24"},ips:{nodeLabel:"Node",label:"IP",placeholder:"e.g. 192.168.1.10/24"}},service:{healthCheckPort:{label:"Health Check Port"},healthCheckSuccessThreshold:{label:"Health Check Success Threshold",description:"If the number of times the probe continuously detects an address successfully reaches the success threshold, then the backend server can start to forward traffic."},healthCheckFailureThreshold:{label:"Health Check Failure Threshold",description:"The backend server will stop forwarding traffic if the number of health check failures reaches the failure threshold."},healthCheckPeriod:{label:"Health Check Period"},healthCheckTimeout:{label:"Health Check Timeout"},healthCheckEnabled:{label:"Health Check"}},secret:{label:"Secrets"},sriov:{label:"SR-IOV Network Devices",nodeName:"Node",numVFs:"Number Of Virtual Functions",vfAddresses:"Virtual Functions Addresses",showMore:"Show More",parentSriov:"Filter By Parent SR-IOV Netork Device",parentSriovGPU:"Filter By Parent SR-IOV GPU Device"},sriovgpu:{label:"SR-IOV GPU Devices",nodeName:"Node",numVFs:"Number of Virtual Functions",vfAddresses:"Virtual Functions Addresses",vGpuDevices:"vGPU Devices",showMore:"Show More",parentSriov:"Filter By Parent SR-IOV GPU",noPermission:"Please contact your system administrator to add Harvester add-ons first.",goSetting:{prefix:"The nvidia-driver-toolkit add-on is not enabled, click",middle:"here",suffix:"to enable it to manage your SR-IOV GPU devices."}},migconfiguration:{label:"vGPU MIG Configurations",status:{outOfSync:"Out of Sync"},infoBanner:"To configure the MIG configuration, please disable it first and re-enable after editing the configuration.",profileSpec:"Profile Specs",profileStatus:"Profile Status",tableHeaders:{profileName:"Profile Name",total:"Total",vGPUID:"vGPU ID",available:"Available",requested:"Requested"},requested:"Requested",available:"Available",total:"Total",vGPUID:"vGPU ID",goSriovGPU:{prefix:"Please enable the supported GPU devices in",middle:"SR-IOV GPU Devices",suffix:"page to manage the vGPU MIG configurations."}},vgpu:{label:"vGPU Devices",noPermission:"Please contact system administrator to add Harvester add-ons first.",detachWarning:{title:"Cannot Disable vGPU",message:"Please detach the device from the VM and save it first before disabling this vGPU device."},goSetting:{prefix:"The nvidia-driver-toolkit add-on is not enabled, click",middle:"here",suffix:"to enable it to manage your vGPU devices."},enableGroup:"Enable Group",disableGroup:"Disable Group",enable:{title:"Select vGPU",type:"Type"},available:"Available Devices",compatibleNodes:"Compatible Nodes",impossibleSelection:"There are no hosts with all of the selected devices.",howToUseDevice:"Use the table below to enable vGPU devices you want to use in this virtual machine.",deviceInTheSameHost:"You can only select devices on the same host."},usb:{label:"USB Devices",noPermission:"Please contact system admin to add Harvester add-ons first",goSetting:{prefix:"The pcidevices-controller add-on is not enabled, click",middle:"here",suffix:"to enable it to manage your USB devices."},enableGroup:"Enable Group",disableGroup:"Disable Group",available:"Available USB Devices",compatibleNodes:"Compatible Nodes",impossibleSelection:"There are no hosts with all of the selected devices.",howToUseDevice:"Use the table below to enable USB passthrough on each device you want to use in this VM.",deviceInTheSameHost:"You can only select devices on the same host.",showCompatibility:"Show device compatibility matrix",hideCompatibility:"Hide device compatibility matrix",claimError:"Error enabling passthrough on {name}",unclaimError:"Error disabling passthrough on {name}",cantUnclaim:"You cannot disable passthrough on a device claimed by another user.",detachWarning:{title:"Cannot Disable Passthrough",message:"Please detach the device from the VM and save it first before disabling passthrough."},enablePassthroughWarning:"Please re-enable the USB device if the device path changes in the following situations:  1) Re-plugging the USB device.  2) Rebooting the node. An incorrect device path may cause passthrough to fail.",classType:"Class Type"},harvesterVlanConfigMigrateDialog:{targetClusterNetwork:{label:"Target Cluster Network",placeholder:"Choose Target Cluster Network"}},seeder:{banner:{enable:{prefix:'The "harvester-seeder" add-on is disabled.',middle:"Click here",suffix:"to enable it."},noAccess:"Please contact your system administrator to enable the Out-of-Band Access first.",noAddon:'The "harvester-seeder" add-on does not exist, please check if it is installed.',noInventory:'Waiting for "inventories.metal.harvesterhci.io" to be ready.'},inventory:{host:{label:"Host",placeholder:"e.g. 172.16.1.1"},port:{label:"Port",placeholder:"e.g. 623"},insecureTLS:{label:"Insecure TLS"},secret:{label:"Secret",create:{title:"Add Secret"}},event:{label:"Event"},pollingInterval:{label:"Polling Interval"}}}},typeDescription:{harvester:"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos and color scheme."},advancedSettings:{experimental:"Experimental features allow users to test and evaluate early-access functionality prior to official supported releases",descriptions:{"harv-vlan":"Default Network Interface name of the VLAN network.","harv-backup-target":"Custom backup target to store virtual machine backups.",branding:"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos, and color scheme.","harv-csi-driver-config":"Configure additional information for CSI drivers.","harv-csi-online-expand-validation":"Allow online volume expansion for specific CSI drivers.","harv-containerd-registry":"Containerd Registry Configuration to connect private registries.","harv-log-level":"Configure Harvester server log level. Defaults to Info.","harv-server-version":"Harvester server version.","harv-upgrade-checker-enabled":"Specifies whether to enable Harvester upgrade check or not. Default is True.","harv-upgrade-checker-url":"Default Harvester upgrade check url. Only used when the upgrade-checker-enabled is equal to True.","harv-ui-source":"Configure how to load the UI source. The `External` option is used to load the UI from a ui-index URL, while the `Bundled` option loads the UI from the local Harvester server.","harv-ui-index":"HTML index location for the UI.","harv-cluster-registration-url":"Registration URL for multi-cluster management.","harv-http-proxy":"HTTP proxy for Harvester to access external services.","harv-additional-ca":"Custom CA root certificates for TLS validation.","harv-overcommit-config":"Resource overcommit configuration.","harv-support-bundle-timeout":"Support bundle timeout configuration in minutes, use 0 to disable the timeout.","harv-support-bundle-file-name":"Support bundle file name configuration.","harv-support-bundle-expiration":"Support bundle expiration configuration in minutes.","harv-support-bundle-node-collection-timeout":"Support bundle node collection timeout configuration in minutes.","harv-vm-force-reset-policy":"Configuration for the force-reset action when a virtual machine is stuck on a node that is down.","harv-ssl-parameters":"Custom SSL Parameters for TLS validation.","harv-storage-network":"Longhorn storage-network setting.","harv-rwx-network":"Configure RWX network behavior for shared or dedicated storage network usage.","harv-support-bundle-namespaces":"Select additional namespaces to include in the support bundle.","harv-auto-disk-provision-paths":"Specify the disks(using glob pattern) that Harvester will automatically add as virtual machine storage.","harv-support-bundle-image":'Support bundle image configuration. Find different versions in rancher/support-bundle-kit .',"harv-release-download-url":"This setting allows you to configure the upgrade release download URL address. Harvester will get the ISO URL and checksum value from the ($URL/$VERSION/version.yaml) file hosted by the configured URL.","harv-default-vm-termination-grace-period-seconds":"Configure the virtual machine termination grace period for virtual machine stop.","harv-ntp-servers":"Configure NTP server. You can configure multiple IPv4 addresses or host addresses.","harv-auto-rotate-rke2-certs":"The certificate rotation mechanism relies on Rancher. Harvester will automatically update certificates generation to trigger rotation.","harv-kubeconfig-default-token-ttl-minutes":"TTL (in minutes) applied on Harvester administration kubeconfig files. Default is 0, which means to never expire.","harv-longhorn-v2-data-engine-enabled":'Enable the Longhorn V2 data engine. Default is false.
Changing this setting will restart RKE2 on all nodes. This will not affect running VM workloads. If you see "not enough hugepages-2Mi capacity" errors when enabling this setting, wait a minute for the error to clear. If the error remains, reboot the affected node. ',"harv-longhorn-v2-data-engine-hugepage-enabled":"Enable hugepages when using the Longhorn V2 data engine. Default is true. Disabling hugepages reduces memory pressure on low-spec nodes and increases deployment flexibility. However, performance may be lower compared to running with hugepages.","harv-longhorn-v2-data-engine-memory-size":"Configure the amount of memory allocated to the SPDK target daemon when using the Longhorn V2 data engine. Default is 2048 MiB.","harv-additional-guest-memory-overhead-ratio":"The ratio for kubevirt to adjust the VM overhead memory. The value could be zero, empty value or floating number between 1.0 and 10.0, default to 1.5.","harv-upgrade-config":'Configure image preloading and VM restore options for upgrades. See related fields in settings/upgrade-config ',"harv-vm-migration-network":"Segregated network for VM migration traffic.","harv-rancher-cluster":"Configure Rancher cluster integration settings for guest cluster management.","harv-max-hotplug-ratio":"The ratio for kubevirt to limit the maximum CPU and memory that can be hotplugged to a VM. The value could be an integer between 1 and 20, default to 4.","harv-kubevirt-migration":"Configure cluster-wide KubeVirt live migration parameters.","harv-instance-manager-resources":"Configure resource percentage reservations for Longhorn instance manager V1 and V2. Valid instance manager CPU range between 0 - 40.","harv-cluster-pod-security-standard":"Enforce Kubernetes Pod Security Standards (PSS) at the cluster level."}},typeLabel:{"kubevirt.io.virtualmachine":"{count, plural,\n one { Virtual Machine }\n other { Virtual Machines }\n}","harvesterhci.io.virtualmachineimage":"{count, plural,\n one { Image }\n other { Images }\n}","harvesterhci.io.keypair":"{count, plural,\n one { SSH Key }\n other { SSH Keys }\n}","harvesterhci.io.host":"{count, plural,\n one { Host }\n other { Hosts }\n}","harvesterhci.io.networkattachmentdefinition":"{count, plural,\n one { Virtual Machine Network }\n other { Virtual Machine Networks }\n}","harvesterhci.io.volume":"{count, plural,\n one { Volume }\n other { Volumes }\n}","harvesterhci.io.user":"{count, plural,\n one { User }\n other { Users }\n}","harvesterhci.io.setting":"{count, plural,\n one { Setting }\n other { Settings }\n}","harvesterhci.io.virtualmachinetemplateversion":"{count, plural,\n one { Template }\n other { Templates }\n}","harvesterhci.io.schedulevmbackup":"{count, plural,\n one { Virtual Machine Schedule }\n other { Virtual Machine Schedules }\n}","harvesterhci.io.virtualmachinebackup":"{count, plural,\n one { Virtual Machine Backup }\n other { Virtual Machine Backups }\n}","kubeovn.io.vpc":"{count, plural,\n one { Virtual Private Cloud }\n other { Virtual Private Clouds }\n}","kubeovn.io.vlan":"{count, plural,\n one { VLAN Network }\n other { VLAN Networks }\n}","kubeovn.io.providernetwork":"{count, plural,\n one { Provider Network }\n other { Provider Networks }\n}","kubeovn.io.vpcnatgateway":"{count, plural,\n one { NAT Gateway }\n other { NAT Gateways }\n}","kubeovn.io.iptablessnatrule":"{count, plural,\n one { Source Rule }\n other { Source Rules }\n}","kubeovn.io.iptablesdnatrule":"{count, plural,\n one { Destination Rule }\n other { Destination Rules }\n}","kubeovn.io.iptableseip":"{count, plural,\n one { External IP }\n other { External IPs }\n}","networking.k8s.io.networkpolicy":"{count, plural,\n one { Network Policy }\n other { Network Policies }\n}","harvesterhci.io.cloudtemplate":"{count, plural,\n one { Cloud Configuration Template }\n other { Cloud Configuration Templates }\n}","harvesterhci.io.volumesnapshot":"{count, plural,\n one { Volume Snapshot }\n other { Volume Snapshots }\n}","harvesterhci.io.vmsnapshot":"{count, plural,\n one { Virtual Machine Snapshot }\n other { Virtual Machine Snapshots }\n}","network.harvesterhci.io.vlanconfig":"{count, plural,\n one { Network Configuration }\n other { Network Configurations }\n}","harvesterhci.io.monitoring.alertmanagerconfig":"{count, plural,\n one { Alertmanager Configuration }\n other { Alertmanager Configurations }\n}","harvesterhci.io.logging.clusterflow":"{count, plural,\n one { Cluster Flow }\n other { Cluster Flows }\n}","harvesterhci.io.logging.clusteroutput":"{count, plural,\n one { Cluster Output }\n other { Cluster Outputs }\n}","harvesterhci.io.logging.flow":"{count, plural,\n one { Flow }\n other { Flows }\n}","harvesterhci.io.logging.output":"{count, plural,\n one { Output }\n other { Outputs }\n}","harvesterhci.io.storage":"{count, plural,\n one { Storage Class }\n other { Storage Classes }\n}","devices.harvesterhci.io.pcidevice":"{count, plural,\n one { PCI Device }\n other { PCI Devices }\n}","network.harvesterhci.io.clusternetwork":"{count, plural,\n one { Cluster Network }\n other { Cluster Networks }\n}","network.harvesterhci.io.hostnetworkconfig":"{count, plural,\n one { Host Network }\n other { Host Networks }\n}","harvesterhci.io.addon":"{count, plural,\n one { Add-on }\n other { Add-ons }\n}","devices.harvesterhci.io.sriovnetworkdevice":"{count, plural,\n one { SR-IOV Network Device }\n other { SR-IOV Network Devices }\n}","devices.harvesterhci.io.sriovgpudevice":"{count, plural,\n one { SR-IOV GPU Device }\n other { SR-IOV GPU Devices }\n}","devices.harvesterhci.io.vgpudevice":"{count, plural,\n one { vGPU Device }\n other { vGPU Devices }\n}","devices.harvesterhci.io.migconfiguration":"{count, plural,\n one { vGPU MIG Configuration }\n other { vGPU MIG Configurations }\n}","harvesterhci.io.secret":"{count, plural,\n one { Secret }\n other { Secrets }\n}","harvesterhci.io.blockdevice":"{count, plural,\n one { Disk }\n other { Disks }\n}","loadbalancer.harvesterhci.io.loadbalancer":"{count, plural,\n one { Load Balancer }\n other { Load Balancers }\n}","loadbalancer.harvesterhci.io.ippool":"{count, plural,\n one { IP Pool }\n other { IP Pools }\n}","migration.harvesterhci.io.openstacksource":"{count, plural,\n one { OpenStack Source }\n other { OpenStack Sources }\n}","migration.harvesterhci.io.vmwaresource":"{count, plural,\n one { VMware Source }\n other { VMware Sources }\n}","migration.harvesterhci.io.ovasource":"{count, plural,\n one { OVA Source }\n other { OVA Sources }\n}","migration.harvesterhci.io.virtualmachineimport":"{count, plural,\n one { Virtual Machine Import }\n other { Virtual Machine Imports }\n}","forklift.konveyor.io.provider":"{count, plural,\n one { Provider }\n other { Providers }\n}","forklift.konveyor.io.networkmap":"{count, plural,\n one { Network Map }\n other { Network Maps }\n}","forklift.konveyor.io.storagemap":"{count, plural,\n one { Storage Map }\n other { Storage Maps }\n}","forklift.konveyor.io.plan":"{count, plural,\n one { Migration Plan }\n other { Migration Plans }\n}","forklift.konveyor.io.migration":"{count, plural,\n one { Migration }\n other { Migrations }\n}"}}];e.exports=t.length<=1?t[0]:t}}]);
+(("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_rc2"]=("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_rc2"]||[]).push([[37],{49037:function(e){const t=[{wizard:{create:"Create",next:"Proceed",previous:"Back"},generic:{tip:"Tip",resourceExternalLinkTips:"External Link",namespace:"Namespace",notReady:"Not Ready",labels:"Labels",inProgress:"In Progress",basic:"Basic",loading:"Loading...",none:"None",duration:{infinite:"Infinite","1s":"1 second","5s":"5 seconds","10s":"10 seconds","30s":"30 seconds","1m":"1 minute","3m":"3 minutes","5m":"5 minutes"}},unsupported:{serverVersion:"Current version: {serverVersion}",description:"Harvester ui only supports Harvester cluster version greater or equal to 1.3.0.",learnMore:'Learn more about Harvester from the Harvester Web Site or read the Harvester Docs '},nav:{group:{networks:"Networks",backupAndSnapshot:"Backup and Snapshots",Monitoring:"Monitoring",Logging:"Logging","Monitoring and Logging":"Monitoring and Logging",vmimport:"Virtual Machine Imports",vmMigration:"Virtual Machine Migration",Configurations:"Configurations"}},resourceTable:{groupBy:{device:"Group by Device"}},validation:{arrayCountRequired:"At least {count} {key} {count, plural, =1 {is} other {are}} required, and {key} can not be empty."},members:{clusterMemebership:"Cluster Membership",projectMembership:"Project Membership"},asyncButton:{createAndStart:{action:"Create and Start"},restart:{action:"Save and Restart",success:"Restarted",waiting:"Restarting…"}},dialog:{confirmExecution:{title:"Are you sure?",andOthers:"{count, plural,\n=0 {}\n=1 { and one other }\nother { and {count} other }\n}",protip:"Tip: Hold the {alternateLabel} key while clicking action to bypass this confirmation",stop:{message:"Are you sure you want to stop the {type} {names}?"},pause:{message:"Are you sure you want to pause the {type} {names}?"},restart:{message:"Are you sure you want to restart the {type} {names}?"},softreboot:{message:"Are you sure you want to soft reboot the {type} {names}?"}},promptRemove:{title:"Delete {type}",warningMessage:"Deleting the selected {type} permanently removes all resources on {thisOrThese} {type}. This action is irreversible. Do you want to continue?",confirmName:"Type {nameToMatch} to delete the {type}:",protip:"Tip: Hold the {alternateLabel} key while clicking Delete to bypass the confirmation step."}},harvester:{branding:{logos:{tip:"Upload a logo to replace the Harvester logo in the top-level navigation header. Image height should be 21 pixels with a max width of 200 pixels. Max file size is 20KB. Accepted formats: JPEG, PNG, SVG."},favicon:{tip:"Upload an icon to replace the Harvester favicon in the browser tab. Max file size is 20KB"}},productLabel:"Harvester",modal:{backup:{success:"Backup { backUpName } has been initiated.",addBackup:"Add Backup",fileSystemFreezeDeadline:{label:"File System Freeze Deadline"}},quota:{editVMQuota:"Edit VM Quota",editQuota:"Edit Quota",bannerMessage:"Set to empty string or 0 to remove total snapshot size quota."},restore:{success:"Restore { name } created successfully.",title:"Backup and Restore",selectBackup:"Select Backup",message:{backup:"Please select the backup that needs to be restored."}},createTemplate:{title:"Generate Template",name:"Name",description:"Description",message:{tip:"Please enter a template name!",success:"Template { templateName } created successfully.",failed:"Failed generated template!"}},schedule:{title:"Create Schedule",message:{tip:"Please enter a schedule name!",success:"Schedule { name } created successfully.",failed:"Failed create schedule!"}},cloneVM:{title:"Clone Virtual Machine",name:"New Virtual Machine Name",type:"Clone volume data",action:{create:"Create",clone:"Clone"},message:{tip:"Please enter a virtual machine name!",success:"Virtual machine { name } cloned successfully.",failed:"Failed clone virtual machine!"}},osImage:{title:"Delete Image",message:"Are you sure you want to delete the image { name } ?"},downloadImage:{title:"Download Image",banner:"This action takes a while depending on the image size ({ size }). Please be patient.",startMessage:"The download process will auto start once the conversion is complete.",download:"Download"},exportImage:{title:"Export to Image",name:"Name",namespace:"Namespace",message:{success:"Image { name } created successfully."}},storageMigration:{title:"Storage Migration",fields:{sourceVolume:{label:"Source Volume",placeholder:"Select a source volume"},targetVolume:{label:"Target Volume",placeholder:"Select a target volume"}}},dataMigration:{title:"Data Migration",fields:{targetVolumeName:{label:"Target Volume Name",placeholder:"Enter a target volume name"},targetStorageClassName:{label:"Target Storage Class",placeholder:"Select a storage class"}}},migration:{failedMessage:"Latest migration failed!",title:"Migration",vmMigrationTitle:"{count, plural, one {Migrating # VM} other {Migrating # VMs}}",selectedVMs:"The following virtual machine(s) will be migrated to the target node",unknownNode:"(unknown node)",alreadyOnTarget:"Already on Target",fields:{nodeName:{label:"Target Node",placeholder:"Choose Target Node"}}},ejectCDROM:{title:"Eject CD-ROM",warnTip:"Eject volume will restart the virtual machine.",operationTip:"Select the volume you want to delete:",delete:"Delete"},bundle:{title:"Generate a Support Bundle",titleDescription:"Collect system-related logs in Harvester to assist with troubleshooting and support.",tip:'Each field below specifies an aspect of the support bundle. For detailed explanations, please refer to the documentation .',url:"Issue URL",description:"Description",namespaces:{label:"Namespaces",tooltip:"Select additional namespaces to include in the support bundle. See docs support-bundle-namespaces for detail.",selectAll:"Select All",unselectAll:"Unselect All"},timeout:{label:"Timeout",tooltip:"Minutes allows for completion of the support bundle generation process. See docs support-bundle-timeout for detail."},expiration:{label:"Expiration",tooltip:"Minutes before deleting packaged but not downloaded support bundle. See docs support-bundle-expiration for detail."},nodeTimeout:{label:"Node Collection Timeout",tooltip:"Minutes allowed for collecting logs/configurations on nodes. See docs support-bundle-node-collection-timeout for detail."}},hotplugVolume:{success:"Volume { diskName } is mounted to the virtual machine { vm }.",title:"Add Volume"},hotplugNic:{success:"The settings have been saved, but the network interface {interfaceName} will be attached only after the virtual machine is migrated.",title:"Add Network Interface",vmNetwork:"Virtual Machine Network",macAddress:"MAC Address",macAddressTooltip:"If left blank, the MAC address will be automatically generated."},insertCdRomVolume:{success:"{ imageName } is inserted into device { deviceName }.",title:"Insert Image",image:"Image",actionLabel:"Insert Image"},cpuMemoryHotplug:{success:"CPU and Memory are updated to the virtual machine { vm }.",title:"Edit CPU and Memory",maxResourcesMessage:"You can increase the CPU to maximum { maxCpu }C and memory to maximum { maxMemory }."},snapshot:{title:"Take Snapshot",name:"Name",message:{success:"Take Snapshot { name } successfully."}},volumeClone:{title:"Clone Volume",name:"Name",message:{success:"New Volume { name } cloned successfully."}},restoreSnapshot:{title:"Restore Snapshot",name:"New Volume Name",success:"New Volume { name } restored successfully."},vmSnapshot:{title:"Take Virtual Machine Snapshot",name:"Name",success:"Take virtual machine Snapshot { name } successfully.",fileSystemFreezeDeadline:{label:"File System Freeze Deadline"}},restart:{title:"Restart Virtual Machine",tip:"Restart the virtual machine for configuration changes to take effect.",cancel:"Save"}},notification:{title:{succeed:"Succeed",info:"Info",warning:"Warning",error:"Error"},restartRequired:{title:"{count} {count, plural, =1 {Virtual Machine is} other {Virtual Machines are}} Pending Restart",message:"Please restart { vmNames } to apply updated configurations"}},action:{createVM:"Create Virtual Machine",start:"Start",restart:"Restart",softreboot:"Soft Reboot",stop:"Stop",pause:"Pause",deepClone:"Clone",shallowClone:"Clone Template",unpause:"Unpause",encryptImage:"Encrypt Image",decryptImage:"Decrypt Image",ejectCDROM:"Eject CD-ROM",editVMQuota:"Edit Virtual Machine Quota",launchFormTemplate:"Launch instance from template",modifyTemplate:"Modify template (Create new version)",setDefaultVersion:"Set default version",addTemplateVersion:"Add template version",backup:"Take Backup",createSchedule:"Create Schedule",restore:"Restore",restoreNewVM:"Restore New",resumeSchedule:"Resume",suspendSchedule:"Suspend",restoreExistingVM:"Replace Existing",migrate:"Migrate",vmMigrate:"Virtual Machine Migration",cpuAndMemoryHotplug:"Edit CPU and Memory",abortMigration:"Abort Migration",storageMigration:"Storage Migration",cancelStorageMigration:"Cancel Storage Migration",dataMigration:"Data Migration",createTemplate:"Generate Template",enableMaintenance:"Enable Maintenance Mode",disableMaintenance:"Disable Maintenance Mode",enableCPUManager:"Enable CPU Manager",disableCPUManager:"Disable CPU Manager",cordon:"Cordon",uncordon:"Uncordon",addHotplugVolume:"Add Volume",addHotplugNic:"Hotplug Network Interface",exportImage:"Export Image",viewlogs:"View Logs",cancelExpand:"Cancel Expand",snapshot:"Take Snapshot",pvcClone:"Clone Volume",vmSnapshot:"Take Virtual Machine Snapshot",shutdown:"Shut Down",powerOn:"Power On",reboot:"Reboot",reconnect:"Reconnect",forceStop:"Force Stop"},formatters:{hardwareResourceGauge:{allocated:"Allocated",consumption:"{useful} of {total} {units} {suffix}",cores:"CPU",pods:"Pods",ram:"Memory",used:"Used",reserved:"Reserved",units:{cores:"{count, plural,\n=1 {core}\nother {cores}}"}},harvesterIpAddress:{customIpTooltip:"Custom IP (set via annotation)"}},tableHeaders:{hostNetworkConfig:{underlay:"Underlay",underlayTooltip:"Allow this interface to act as the underlay for VM overlay networks.",vlanID:"VLAN ID",mode:"Mode",clusterNetwork:"Cluster Network"},imageEncryption:"Encryption",size:"Size",virtualSize:"Virtual Size",progress:"Progress",message:"Message",phase:"Phase",attachedVM:"Attached Virtual Machine",cpuManager:"CPU Manager",routeConnectivityTooltip:"Connectivity between the VM network and the management network, which the Harvester nodes are connected to.",fingerprint:"Fingerprint",value:"Value",actions:"Actions",readyToUse:"Ready To Use",backupTarget:"Backup Target",targetVm:"Target Virtual Machine",cronExpression:"Cron Expression",retain:"Retain",scheduleType:"Type",configuredProfiles:"Configured Profiles",maxFailure:"Max Failure",sourceVm:"Source Virtual Machine",vmSchedule:"Virtual Machine Schedule",hostIp:"Host IP",vm:{ipAddress:"IP Address",node:"Node",defaultVersion:"Default Version"},network:{type:"Type",vlan:"VLAN ID"},snapshotTargetVolume:"Original Volume",volumeSnapshotCounts:"Snapshot Counts",networkState:"Network State",totalSnapshotQuota:"Total Snapshot Quota",storageClass:"Storage Class",restore:"Restore",vmImportSourceVm:"Source VM",vmImportSourceCluster:"Source Cluster",vmImportStatus:"Import Status",vmImportSourceVDatacenter:"Datacenter",vmImportSourceVEndpoint:"Endpoint",vmImportSourceVClusterStatus:"Cluster Status",vmImportSourceORegion:"Region",vmImportSourceOEndpoint:"Endpoint",vmImportSourceOClusterStatus:"Cluster Status",vmImportSourceOVAUrl:"URL",vmImportSourceOVAStatus:"Status",v4ip:"V4 IP",v6ip:"V6 IP",eipName:"EIP Name",vmMigrationProviderType:"Type",vmMigrationProviderUrl:"URL",vmMigrationMapSourceProvider:"Source Provider",vmMigrationMapDestProvider:"Destination Provider",vmMigrationPlanTargetNs:"Target Namespace",vmMigrationPlanVmCount:"VM Count",vmMigrationMigrationPlan:"Plan"},tab:{volume:"Volumes",network:"Networks",advanced:"Advanced Options",accessCredentials:"Access Credentials",pciDevices:"PCI Devices",vGpuDevices:"vGPU Devices",usbDevices:"USB Devices",vmScheduling:"Virtual Machine Scheduling",quotas:"Quotas",snapshots:"Snapshots",instanceLabel:"Instance Labels",annotations:"Annotations",filesystem:"Filesystem Volume"},fields:{version:"Version",name:"Name",type:"Type",image:"Image",size:"Size",volume:"Volume",network:"Network",model:"Model",macAddress:"MAC address",staticIp:"Static IP",port:"Port",protocol:"Protocol",remove:"Remove",PhysicalNic:"Physical NIC",cpu:"CPU",memory:"Memory",virtualName:"Virtual machine name",promiscuous:"Promiscuous",ipv4Address:"IPv4 address",filterLabels:"Filter labels",filterSchedule:"Filter schedule",storageClass:"Storage class",dockerImage:"Docker image"},pci:{available:"Available Devices",compatibleNodes:"Compatible Nodes",impossibleSelection:"There are no hosts with all of the selected devices.",howToUseDeviceInVMCreation:{prefix:"Use the table below to enable PCI passthrough on each device you want to use in this virtual machine. For vGPU devices, please enable them on the",middle:"vGPU Devices",suffix:"page first."},howToUseDevice:{prefix:"Select the device in the table to enable PCI passthrough. For vGPU devices, please enable them on the",middle:"vGPU Devices",suffix:"page."},deviceInTheSameHost:"You can only select devices on the same host.",showCompatibility:"Show device compatibility matrix",hideCompatibility:"Hide device compatibility matrix",claimError:"Error enabling passthrough on {name}",unclaimError:"Error disabling passthrough on {name}",cantUnclaim:"You cannot disable passthrough on a device claimed by another user.",detachWarning:{title:"Cannot Disable Passthrough",message:"Please detach the device from the VM and save it first before disabling passthrough."},enableGroup:"Enable Group",disableGroup:"Disable Group",labelRequired:"This rule should not be manually altered: it ensures that the PCI devices selected for this virtual machine are available on the virtual machine's host.",goSetting:{prefix:"The pcidevices-controller add-on is not enabled, click",middle:"here",suffix:"to enable the add-on to successfully manage your PCI devices."},noPCIPermission:"Please contact your system administrator to enable the PCI devices first.",enablePassthroughWarning:"Please be careful not to use host-owned PCI devices (e.g., management and VLAN NICs). Incorrect device allocation may cause damage to your cluster, including node failure.",disableResourcePooling:"Disable Resource Pooling",disableResourcePoolingDescription:"Assigns this device a unique resource name so it can be pinned to a specific VM, instead of sharing the pool with other identical devices."},devices:{matrixHostName:"Host Name",matrixDeviceClaimName:"Device Claim Name"},generic:{close:"Close",open:"Open",showMore:"Show More",hideMore:"Hide More",memory:"Memory",cpu:"CPU",storage:"Storage",noFileChosen:"No file chosen",noSchema:"Can not find the custom resource definition: {schema}."},validation:{custom:{tooLongName:'"Name" cannot be more than {max} characters.'},generic:{hasDelete:'{type} "{name}" has been deleted.',maxLength:'"{key}" cannot be more than {max} characters',tabError:"{prefix}: {message}",maximumSize:"Exceed maximum size {max}!",regex:'Invalid {lowerType} "{name}": {upperType} must match the regex "{regex}"'},vm:{name:"name is required!",memory:'"Memory" is required!',duplicatedName:'duplicate {type} name: "{name}"',network:{macFormat:"Invalid MAC address format.",upperType:"Network name",lowerType:"network name"},volume:{upperType:"Volume name",lowerType:"volume name",needAtLeastOneBootable:"At least one bootable volume is required!"}},image:{ruleTip:"The URL you have entered ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw.",ruleFileTip:"The file you have chosen ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw."},hash:{sha512:"Invalid SHA512 checksum."},subnet:{excludeIps:"Exclude IPs cannot be empty. Please remove or fill in the exclude IPs.",aclEmptyError:"The fields in subnet access control list rule can not be empty."}},dashboard:{label:"Dashboard",header:"Harvester Cluster: {cluster}",hardwareResourceGauge:{cpu:"CPU",memory:"Memory",storage:"Storage",allocated:"Allocated"},sections:{events:{label:"Events"},vmMetrics:{label:"Virtual Machine Metrics"}},version:"Version"},host:{console:"Console",label:"Hosts",inconsistentIP:"Host IP is inconsistent, current IP: { currentIP }, initial IP: { initIP }",noConsoleUrl:"Console URL not specified",promote:{none:" ",running:"Promoting",failed:"Promote failed",unknown:"Promote halted",promoteRestart:"Restarting",promoteSucceed:"Promote completed"},tabs:{network:"Network",overview:"Overview",basics:"Basics",instance:"Virtual Machines",monitor:"Monitor Data",storage:"Storage",labels:"Labels",ksmtuned:"Ksmtuned",hugepages:"Hugepages",seeder:"Out-of-band Access"},detail:{kvm:{disableMessage:"Hardware-based virtualization is disabled or not supported. Hardware-based virtualization must be enabled before creating any virtual machines."},title:{network:"Network Configuration"},hostIP:"Host IP",role:"Role",os:"Operating System",create:"Creation Time",update:"Last Update Time",customName:"Custom Name",consoleUrl:"Console URL",more:"More Information",uuid:"UUID",containerRuntime:"Container Runtime",kernel:"Kernel",management:"Management Node",compute:"Compute Node",storage:"Storage",nic:"Physical NIC",notRecommended:"Not recommended",networkType:"Type",manufacturer:"Manufacturer",serialNumber:"Serial Number",model:"Model",etcd:"Witness Node",cpuManager:"CPU Manager"},enableMaintenance:{title:"Enable Maintenance Mode",protip:"The operation will migrate all virtual machines on this node to other nodes.",shutDownVMs:"Check Force option to shutdown virtual machines which cannot be migrated in live mode.",force:"Force"},cordon:{title:"Cordon",protip:"This operation will mark the node { node } as unschedulable."},ksmtuned:{run:"Run Strategy",configure:"Configure",mode:"Mode",modeLink:'Mode ',thresCoef:"Threshold Coefficient",enableMergeNodes:"Enable merging across nodes",enable:"Enable",disable:"Disable",ksmStatus:"KSM Status",modeOption:{standard:"Standard",high:"High-performance",customized:"Customized"},parameters:{title:"Ksmtuned Parameters",boost:"Boost",decay:"Decay",sleepMsec:"Sleep Time (Millisecond)",minPages:"Minimum Pages",maxPages:"Maximum Pages",description:{boost:"The number of scanned pages is incremented each time if the available memory is less than the threshold coefficient.",decay:"The number of scanned pages is decremented each time if the available memory is greater than the threshold coefficient.",sleepMsec:"The interval between two scans (the minimum value is 10ms), which is calculated by the formula (Sleep Milliseconds * 16 * 1024 * 1024/Total Memory).",minPages:"The minimum number of pages per scan, also the configuration for the first run.",maxPages:"Maximum number of pages per scan."}},statistics:{title:'Statistics ',sharing:"Sharing",shared:"Shared",unshared:"Unshared",volatile:"Volatile",fullScans:"Full Scans",stableNodeChains:"Stable Node Chains",stableNodeDups:"Stable Node Dups"}},hugepages:{meminfo:"Meminfo",transparent:{title:'Transparent Hugepages ',enabled:"Enabled",shmemEnabled:"Shared Memory Enabled",defrag:"Defragmentation"},status:{anon:"Anonymous Hugepages (bytes)",size:"Default Hugepage Size (bytes)",total:"Total Hugepages",free:"Free Hugepages",rsvd:"Reserved Hugepages",surp:"Surplus Hugepages"}},disk:{add:"Add Disk",path:{label:"Path"},storageReserved:{label:"Storage Reserved"},allowScheduling:{label:"Scheduling",tooltip:"Disk {name} ({path}) scheduling is disabled"},evictionRequested:{label:"Eviction Requested"},forceFormatted:{label:"Force Formatted",toolTip:"Force formatted will clean up disk data, make sure you backup all available data to prevent data loss.",yes:"Yes (Ext4 File System)"},description:{label:"Description"},lastFormattedAt:{info:"The disk has already been force-formatted."},notification:{success:'Update host "{name}" storage configurations successfully.'},error:"Host has unready or unschedulable disks.",mounted:"Already Mounted",fileSystem:{info:"Current file system is {system}, You can format it manually.",formatting:"Disk is formatting, please wait."},tags:{label:"Disk Tags",addLabel:"Add Disk Tag"},conditions:"Conditions",storageAvailable:{label:"Storage Available"},storageScheduled:{label:"Storage Scheduled"},storageMaximum:{label:"Storage Maximum"},provisioner:"Provisioner",lvmVolumeGroup:{label:"Volume Group",create:"Create New..."},storage:{longhorn:{LonghornV1:{label:"Longhorn V1 (CSI)"},LonghornV2:{label:"Longhorn V2 (CSI)"}},lvm:{label:"LVM"}}},tags:{label:"Host Tags",addLabel:"Add Host Tag"},powerAction:{message:{success:"Perform host { name } { operation } successfully."}},ntp:{label:"NTP Server Addresses",tips:"You can configure multiple IPv4 addresses or host addresses.",placeholder:"e.g. IPv4",ntpSyncStatus:{isDisabled:"NTP is disabled. Please check the NTP service is active.",isUnsynced:"NTP is not synchronized with the NTP server {current}."}}},virtualMachine:{label:"Virtual Machines",osType:"OS Type",cpuModel:{label:"CPU Model",fetchError:"Failed to load CPU model configuration: {error}",optionLabel:"{modelName} ({count} {count, plural, one {node} other {nodes}})"},hotplug:{title:"Enable CPU and memory hotplug",tooltip:"The default maximum CPU and maximum memory are {hotPlugTimes} times based on CPU and memory.",restartVMMessage:"Restart action is required for the virtual machine configuration change to take effect"},hotUnplug:{actionLabel:"Detach",detachVolume:{title:"Are you sure that you want to detach volume {name}?",actionLabel:"Detach Volume",success:"Volume { name } is detached successfully."},ejectCdRomVolume:{title:"Are you sure that you want to eject image from device {name}?",actionLabel:"Eject Image",success:"Image from device { name } is ejected successfully."},detachNIC:{title:"Are you sure that you want to detach network interface {name}?",actionLabel:"Detach Network Interface",success:"The settings have been saved, but the network interface {name} will be detached only after the virtual machine is migrated."}},instance:{singleInstance:null,multipleInstance:null,single:{label:"Single Instance",nameLabel:"Name",host:{label:"Hostname",placeholder:"Default to the virtual machine name."}},multiple:{label:"Multiple Instance",nameNsDescription:"Name prefix for each instance",count:"Count",countTip:"Count should be between 1 and 10",nameLabel:"Name Prefix",host:{label:"Host Prefix Name",placeholder:"Default to the virtual machine name."}}},useTemplate:{label:"Use the virtual machine template:",template:{label:"Template"},version:{label:"Version"}},console:{novnc:"Open in WebVNC",serial:"Open in Serial Console"},promptRemove:{title:"Select the volume you want to delete:",deleteAll:"Delete All",tips:"Warn: The snapshots of the virtual machine will be deleted with virtual machine and the snapshots of volume will be deleted with volume."},restartTip:"{restart, select,\n true {Restart}\n other {Start}\n} the virtual machine now to take effect of the configuration changes.",runStrategy:"Run Strategy",maintenanceStrategy:{label:"Maintenance Strategy",options:{Migrate:"Migrate",ShutdownAndRestartAfterEnable:"Shutdown and Restart After Enable",ShutdownAndRestartAfterDisable:"Shutdown and Restart After Disable",Shutdown:"Shutdown"}},cpuPinning:{label:"Enable CPU Pinning",tooltip:"Enable CPU Pinning brings better performance and reduce latency for the virtual machine",restartVMMessage:"Changing the CPU Pinning setting requires a virtual machine reboot for the change to take effect",migrationMessage:"This virtual machine can only be migrated to a target node that has CPU Manager enabled, as CPU Pinning is configured."},restartNow:"{restart, select,\n true {Restart}\n other {Start}\n} Now",createSSHKey:"Create a New...",genericLoginError:"Authentication failed. Please re-log in and try again.",installAgent:"Install guest agent",enableUsb:"Enable USB Tablet",advancedOptions:{tpm:"Enable TPM",tpmPersistentState:"TPM Persistent State",cpuManager:{prefix:"You must enable CPU Manager for at least one node in",middle:"host page",suffix:"to enable CPU Pinning for VM"},efiEnabled:"Booting in EFI mode",efiPersistentState:"EFI Persistent State",secureBoot:"Secure Boot"},usbTip:"Provides an absolute pointer device which often helps with getting a consistent mouse cursor position in VNC.",sshTitle:"Add Public SSH Key",imageTip:"An external URL to the .iso, .img, .qcow2 or .raw that the virtual machine should be created from.",volume:{dragTip:"Drag and drop volumes, or use the volume's arrows, to change the boot order.",volumeTip:"The virtual machine only contains a CD-ROM volume. You may want to add additional disk volumes.",macTip:"MAC address as seen inside the guest system.",staticIpTip:"Static IP that will be stored to annotation static-ip.harvesterhci.io/{nic_name}.",volumeUpdate:"Set volume { name } successfully",type:"Type",size:"Size",edit:"Edit",bus:"Bus",readyToUse:"Ready To Use",bootOrder:"Boot Order",volume:"Volume",dockerImage:"Docker Image",addVolume:"Add Volume",addExistingVolume:"Add Existing Volume",addVmImage:"Add a Virtual Machine Image",addContainer:"Add Container",setFirst:"Set as root volume",saveVolume:"Update Volume",encryption:"Encryption",vmImageVolumeTip:"Disk size ({diskSize}) should greater than selected image virtual size ({imageVirtualSize})",lockTooltip:{all:"All volumes are encrypted.",partial:"Some volumes are encrypted."},title:{vmImage:"Image Volume",existingVolume:"Existing Volume",volume:"Volume",container:"Container"},unmount:{title:"Are you sure?",message:"Are you sure you want to unmount this volume?"},emptyImage:"No media"},network:{title:"Network",addNetwork:"Add Network",addPort:"Add Port"},cloudConfig:{title:"Cloud Configuration",createTemplateTitle:"Create {name}",createNew:"Create new...",cloudInit:{label:"Cloud Init",placeholder:"Select a template"},user:{label:"User Data Template",title:"User Data:",tip:"You can specify user data to configure an instance or run a configuration script during launch. If you launch more than one instance at a time, the user data is available to all the instances in that reservation. Learn more "},network:{label:"Network Data Template",title:"Network Data:",tip:"The network-data configuration allows you to customize the instance's networking interfaces by assigning subnet configuration, virtual device creation (bonds, bridges, VLANs) routes and DNS configuration. Learn more "}},sysprep:{title:"Windows Sysprep Configuration",description:"Configure Windows automated installation using autounattend.xml. The configuration will be stored in a Kubernetes Secret and mounted as a CD-ROM during installation. Learn more ",createNew:"Create new...",createNewTitle:"Create Windows Sysprep Template",xmlContent:"autounattend.xml content",secret:{label:"Windows Sysprep Template"},validation:{invalidXml:"Invalid XML syntax",invalidNamespace:"Invalid unattend.xml namespace. Expected 'urn:schemas-microsoft-com:unattend'"}},scheduling:{affinity:{anyNode:"Run virtual machine on any available node",schedulingRules:"Run virtual machine on node(s) matching scheduling rules",specificNode:"Run virtual machine on specific node - (Live migration is not supported)"},networkNotSupport:"Network not support schedule"},accessCredentials:{resetPwd:{label:"Add Basic Auth"},injectSSH:{label:"Add SSH Key",users:"Select Users",addUser:"Add User"},tips:"qemu-guest-agent must be installed to enable the accessing of credentials. The virtual machine needs to be restarted after credentials added. You need to be in the virtual machine to edit your password or remove an SSH-Key after deleting the credentials.",userTips:"The user to be added must already exist; otherwise, the credentials will not take effect.",duplicatedUser:"User already exists.",invalidUser:"Invalid Username."},input:{name:"Name",cpu:"CPU",maxCpu:"Maximum CPU",maxMemory:"Maximum Memory",memory:"Memory",image:"Image",sshKey:"SSHKey",sshKeyValue:"SSH-Key",MachineType:"Machine Type",username:"Username",password:"Password",reservedMemory:"Reserved Memory",customizeDisplayName:"Customize virtual machine display name",displayNamePlaceholder:"Virtual machine alias name",displayName:"Display Name"},filesystem:{description:"Harvester supports filesystem volumes for VM via virtiofs.",type:"Filesystem Type",volume:"Volume",resource:"Resource",add:"Add",mountBannerHint:"Please update the mount path (e.g. /mnt/appconfigfs) to your preferred location, then add the corresponding commands to the",mountBannerHintLink:"runcmd",mountBannerHintSuffix:"in Advanced tab User Data."},machineTypeTip:"Specify a processor architecture to emulate. To see a list of supported architectures, run: qemu-system-x86_64 -cpu ?",detail:{tabs:{overview:"Overview",details:"Details",environment:"Environment",events:"Events",migration:"Migration",console:"Console",networkInterfaces:"Network Interfaces",disks:"Disks",networks:"Networks",basics:"Basics",configurations:"Configurations",inventory:"Inventory",hostBasic:"Basic Attributes",instance:"Virtual Machines",monitor:"Monitor Data",keypairs:"SSH Keys",cloudConfig:"Cloud Configuration",metrics:"Virtual Machine Metrics"},details:{title:{vmDetails:"Virtual Machine Details",requirements:"Scheduling and resources requirements",services:"Services",users:"Logged in users"},name:"Name",totalSnapshotQuota:"Total Snapshot Quota",namespace:"Namespace",created:"Created",hostname:"Hostname",node:"Node",ipAddress:"IP Address",status:"Status",pod:"Pod",labels:"Labels",bootOrder:"Boot Order",annotations:"Annotations",CDROMs:"CD-ROMs",description:"Description",operatingSystem:"Operating System",template:"Template",kernelRelease:"Kernel Release",owner:"Owner",workloadProfile:"Workload Profile",nodeSelector:"Node Selector",flavor:"Flavor",tolerations:"Tolerations",dedicatedResources:"Dedicated Resources",down:"Virtual machine not running",affinityRules:"Affinity Rules",phase:"Phase",sourceNode:"Source Node",targetNode:"Target Node",started:"Started",ended:"Ended"},notAvailable:"Not available",GuestAgentNotInstalled:"Guest agent required",noOwner:"No Owner",events:{from:"Generated from",down:"No events in the past hour"},console:{down:"This virtual machine is down. Please start it to access its console.",shortcutKeys:"Shortcut Keys",customShortcutKeys:"Custom Shortcut Keys",management:"Management Shortcut Keys",record:{start:"Record",recording:"Recording",stop:"Stop Recording",tips:"Press the record button to capture your keyboard inputs.",send:"Send",preferredKeys:"Preferred Custom Shortcut Keys"}}},terminationGracePeriodSeconds:{label:"Termination Grace Period"},affinity:{addLabel:"Add Workload Selector",topologyKey:{placeholder:"topology.kubernetes.io/zone"},thisPodNamespace:"This virtual machine's namespace",matchExpressions:{inNamespaces:"Workloads in these namespaces"},namespaces:{label:"Namespaces"}},instanceLabels:{banner:"These labels are automatically synchronized to the virtual machine instance."},labels:{banner:"These key values are added as labels to the virtual machine."},annotations:{banner:"These key values are added as annotations to the virtual machine."}},volume:{label:"Volumes",tabs:{basics:"Basics",snapshots:"Snapshots",datasource:"Data Source",details:"Details",conditions:"Conditions"},size:"Size",volumeMode:"Volume Mode",accessModes:"Access Modes",createWithDataVolume:"Create with DataVolume",createWithDataVolumeTooltip:"Create Volume with Kubevirt/Containerized Data Importer way. It can fill accessMode/volumeMode automatically.",showAdvanced:"Show Advanced Options",hideAdvanced:"Hide Advanced Options",source:"Source",kind:"Kind",sourceOptions:{new:"New",vmImage:"Virtual Machine Image"},image:"Image",frontend:"Frontend",blockdev:"Block Device",attachedNode:"Attached Node",endpoint:"Endpoint",diskTags:"Disk Tags",nodeTags:"Node Tags",lastBackup:"Last Backup",lastBackupAt:"Last Backup At",replicasNumber:"Replicas Number",promptRemove:{tips:"Warn: The volume's snapshots will be deleted with this volume."},externalLink:{tips:"Check volume details"},rebuildingMessage:"Rebuilding: {percentage}%",longhorn:{disableResize:"Longhorn V2 volumes cannot be resized."}},image:{label:"Images",tabs:{basics:"Basics"},url:"URL",size:"Size",isEncryption:"Encryption",encryptionSecret:"Encryption Secret",virtualSize:"Virtual Size",urlTip:'Supports the raw and qcow2 image formats which are supported by qemu . Bootable ISO images can also be used and are treated like raw images.',fileName:"File Name",uploadFile:"Upload File",source:"Source Type",sourceType:{download:"URL",upload:"File",clone:"Clone",encrypt:"Encrypt",decrypt:"Decrypt"},sourceImage:"Source Image",cryptoOperation:"Crypto Operation",warning:{uploading:"{count, plural,\n=1 {1 image is uploading, please do not refresh or close the page.}\nother {{count} images are uploading, please do not refresh or close the page.}\n}",osUpgrade:{uploading:"{name} is uploading, please do not refresh or close the page."}},checksum:"Checksum",checksumTip:"Validate the image using the SHA512 checksum, if specified.",tooltip:{imported:"Created automatically by the vm-import-controller"},errors:{unsupportedBackend:"Unsupported backend type: {backend}"}},vmTemplate:{label:"Templates",tabs:{basics:"Basics"},nameNsDescription:{name:"Template Name"},tips:{notExistImage:{title:"Image {name} does not exist!",message:"Please select a new image."},notExistNode:{title:"Node {name} does not exist!",message:"Please select a new node."}}},upgradePage:{upgradeApp:"Upgrade Software",upgrade:"Upgrade",upgradeTip:"Please select the version you want to upgrade to",currentVersion:"CURRENT VERSION",versionLabel:"AVAILABLE COMPATIBLE VERSIONS",enableLogging:"Enable Logging",skipSingleReplicaDetachedVol:"Skip checking single-replica detached volumes",upgradeNode:"Upgrading Node",upgradeSysService:"Upgrading System Service",upgradeImage:"Download Upgrade Image",osUpgrade:"Cluster Upgrade",uploadNew:"Upload New Image",deleteHeader:"Please select an image to delete.",deleteExisting:"Delete Existing Image",selectExisting:"Select Existing Image",createRepository:"Creating Upgrade Repository",succeeded:"Succeeded",releaseTip:'Please read the upgrade documentation carefully. You can view details on the Harvester Release Notes .',checkReady:"I have read and understood the upgrade instructions related to this Harvester version.",pending:"Pending",upload:{duplicatedFile:"The file you are trying to upload already exists."},repoInfo:{upgradeStatus:"Upgrade Status",os:"OS",kubernetes:"Kubernetes",monitoringChart:"Monitoring Chart",harvesterChart:"Harvester Chart",success:"Success",fail:"Fail",ongoing:"On-going",downloadLog:"Download Log",logStatus:"Log Download Status"},dismissMessage:"Dismiss it",upgradeAvailable:"Upgrade Available",upgradeUnavailable:"Upgrade Unavailable",upgradeInfo:{warning:"WARNING",doc:'Read the documentation before starting the upgrade process. Ensure that you complete procedures that are relevant to your environment and the version you are upgrading to.',tip:"Unmet system requirements and incorrectly performed procedures may cause complete upgrade failure and other issues that require manual workarounds.",moreNotes:"For more details about the release notes, please visit -"}},schedule:{label:"Virtual Machine Schedules",createTitle:"Create Schedule",createButtonText:"Create Schedule",scheduleType:"Virtual Machine Schedule Type",cron:{label:"Cron Schedule",editButton:"Edit"},detail:{namespace:"Namespace",sourceVM:"Source Virtual Machine"},tabs:{basic:"Basic",backups:"Backups",snapshots:"Snapshots"},message:{noSetting:{suffix:"before creating a backup schedule"}},retain:{label:"Retain",count:"Count",tooltip:"Number of up-to-date VM backups to retain. Maximum to 250, minimum to 2."},maxFailure:{label:"Max Failure",count:"Count",tooltip:"Max number of consecutive failed backups that could be tolerated. If reach this threshold, Harvester controller will suspend the schedule job. This value should less than retain count"},virtualMachine:{title:"Virtual Machine Name",placeholder:"Select a virtual machine"},type:{snapshot:"Snapshot",backup:"Backup"}},backup:{label:"Virtual Machine Backups",createText:"Restore Backup",title:"Restore Virtual Machine",refreshInterval:{label:"Refresh Interval",tip:"The interval for the backup target to sync data to harvester cluster. Set to 0 to disable refresh mechanism."},backupTargetTip:"The endpoint used to access the backupstore. NFS and S3 are supported.",message:{noSetting:{prefix:"You must configure the backup target",middle:"setting",suffix:"before creating a new backup."},errorTip:{prefix:"Backup target value in",middle:"setting",suffix:"is invalid, error: "},viewSetting:{prefix:"Click",middle:"here",suffix:"to view the backup configuration."},testConnect:{actionLabel:"Test connection",waitingLabel:"Testing connection...",successLabel:"Connection tested",successMessage:"Harvester can successfully connect to the endpoint {endpoint}"}},restore:{backup:"Backup",deletePreviousVolumes:"Delete Previous Volumes",createNew:"Create new",replaceExisting:"Replace existing",virtualMachineName:"Virtual Machine Name",keepMacAddress:"Keep MAC Address",haltAfterRestore:"Keep powered off after restore"},matchTarget:"The current backup target does not match the existing one.",progress:{details:"Volume details",tooltip:{starting:"Backup initiating",progress:"Backup in progress",complete:"Backup completed"}}},restore:{progress:{details:"Volume details",tooltip:{starting:"Restore initiating",progress:"Restore in progress",complete:"Restore completed"}}},subnet:{cidrBlock:{tooltip:"The subnet range in CIDR notation. Note that the CIDR blocks of different Subnets' within the same VPC cannot overlap.",label:"CIDR Block",placeholder:"e.g. 172.20.0.0/16"},protocol:{label:"Protocol"},provider:{tooltip:"Network provider for this Subnet. Must be one of the Virtual Machine Networks in OverlayNetwork type.",label:"Provider"},vpc:{label:"Virtual Private Cloud"},gateway:{label:"Gateway IP",placeholder:"e.g. 172.20.0.1"},vlan:{label:"VLAN",placeholder:"Select a VLAN"},dhcp:{label:"Dynamic Host Configuration Protocol (DHCP)",v4Options:"DHCPV4Options",v6Options:"DHCPV6Options",placeholder:"key1=value1, key2=value2",dhcpOptionBanner:'DHCP options is a key/value string concatenate with comma. For more detail, please refer to KubOVN document ',tooltip:"Enable DHCP server for this subnet. When enabled, VMs can automatically obtain IP addresses from this subnet."},externalConnectivity:{label:"NAT Outgoing",tooltip:"Enable NAT for VMs using this subnet to access external networks."},private:{label:"Private Subnet",tooltip:"Enable network isolation for this Subnet. When enabled, VMs can only communicate within this subnet, even if other subnets exist under the same VPC."},allowSubnet:{label:"Allow Subnets",tooltip:"You can specify certain subnets which can communicate with this subnet.",addSubnet:"Add Allow Subnet",placeholder:"e.g. 172.16.0.0/16"},excludeIPs:{tooltip:"The IP address list to reserve from automatic assignment. The gateway IP address is always excluded and will be automatically added to the list.",placeholder:"single IP or 192.168.0.100..192.168.0.200"},acl:{label:"Access Control List",tooltip:"The ACL to apply to this Subnet. Must be one of the ACLs in the same namespace.",action:{label:"Action",placeholder:"Please select an action"},direction:{label:"Direction",placeholder:"Please select a direction"},addRule:"Add Rule",priority:{label:"Priority",placeholder:"Please select a priority"},match:{label:"Match",placeholder:"e.g. ip4.dst == 10.10.0.2"},banner:'The supported field in ACL match can refer to KubeOvn Subnet ACL document '}},vpc:{viewTopology:"Topology",topology:{loading:"Loading topology...",empty:"No resources found",visibility:{vpc:"VPC",subnets:"Subnets",overlayNetworks:"Overlay Networks",vms:"VMs"},labels:{cidr:"CIDR",provider:"Provider",type:"Type",clusterNetwork:"Cluster Network",network:"Network",subnet:"Subnet",ip:"IP",mac:"MAC",peering:"Peering"}},noAddonEnabled:{prefix:"The kubeovn-operator add-on is not enabled, click",middle:"here",suffix:"to enable the add-on to successfully create VPC and subnet."},label:"Virtual Private Cloud",noChild:"There is no subnet defined in this Virtual Private Cloud.",createSubnet:"Create Subnet",staticRoutes:{label:"Static Routes",cidr:{label:"CIDR",placeholder:"e.g. 172.16.0.0/16"},nextHopIP:{tooltip:"The localConnectIP on the other end of the peering VPC.",label:"Next Hop IP",placeholder:"e.g. 169.254.0.2"}},vpcPeerings:{label:"VPC Peerings",localConnectIP:{tooltip:"The designated IP address in CIDR notation of the VPC peering endpoint. Note that both IP addresses (for the VPC and the other VPC) should belong to the same subnet range and should not conflict with the cidrBlock in any existing subnets.",label:"Local Connect IP",placeholder:"e.g. 169.254.0.1/16"},remoteVpc:{label:"Remote VPC"},infoBanner:'The static route destination CIDR must cover all subnets CIDR from remote VPC Peer. Read VPC Peering Configuration Examples for more information.'}},natGateway:{label:"Gateways",internalTenantNetwork:{label:"Internal Tenant Network",placeholder:"Select a Virtual Machine Network"},vpc:{label:"VPC",placeholder:"Select a VPC"},subnet:{label:"Subnet",placeholder:"Select a subnet"},lanIp:{label:"LAN IP",placeholder:"Enter LAN IP"},externalSubnets:{label:"External Subnets",addLabel:"Add",placeholder:"Select a subnet"}},externalIP:{label:"External IPs",natGateway:{label:"VpcNatGateway",placeholder:"Select a VpcNatGateway"},externalSubnet:{label:"External Subnet",placeholder:"Select an external subnet"},v4ip:{label:"V4 IP",placeholder:"public ip from external subnet"}},snat:{label:"Source Rules",eip:{label:"EIP",placeholder:"Select an external IP"},internalCIDR:{label:"Internal CIDR",placeholder:"internal subnet CIDR"}},dnat:{label:"Destination Rules",eip:{label:"EIP",placeholder:"Select an external IP"},externalPort:{label:"External Port",placeholder:"port number"},internalIp:{label:"Internal IP",placeholder:"internal IP address"},internalPort:{label:"Internal Port",placeholder:"port number"},protocol:{label:"Protocol",placeholder:"Select protocol (tcp or udp)"}},providerNetwork:{label:"Provider Networks",defaultInterface:{label:"Default Interface",placeholder:"Select the interface the same as master interface of external overlay network"},customInterfaces:{label:"Custom Interfaces",addLabel:"Add Custom Interface",interface:{label:"Network Interface",placeholder:"e.g. eth2"},nodes:{label:"Nodes",addLabel:"Add Node",placeholder:"Select a node"}},excludedNodes:{label:"Excluded Nodes",addLabel:"Add Excluded Node",placeholder:"Select node to exclude from this provider network"}},vlanNetwork:{label:"VLANs"},vlan:{id:{label:"VLAN ID",placeholder:"e.g. 1-4094"},provider:{label:"Provider Network",placeholder:"Select a provider network"}},networkPolicy:{label:"Policies",banner:'The network policies must be used for VMs attached to overlay networks. Please read the harvester document how the network policy works.'},network:{label:"Virtual Machine Networks",tabs:{basics:"Basics",layer3Network:"Route",nic:"Network Interface Card"},clusterNetwork:{label:"Cluster Network",create:"Create a new cluster network",toolTip:"Define your custom cluster scope network name",createPlaceholder:"Input a new cluster network name",selectOrCreatePlaceholder:"Select or create a new cluster network",selectPlaceholder:"Select a cluster network"},layer3Network:{mode:{label:"Mode",auto:"Auto (DHCP)",manual:"Manual"},serverIPAddr:{label:"DHCP Server IP"},gateway:{label:"Gateway",placeholder:"e.g. 172.16.0.1"},cidr:{label:"CIDR",placeholder:"e.g. 172.16.0.1/24"}}},sshKey:{label:"SSH Keys",keypair:"SSH Key",tabs:{basics:"Basics"}},setting:{label:"Settings",tabs:{advanced:"Advanced",ui:"UI"},validation:{physicalNIC:"DefaultPhysicalNIC"},placeholder:{accessKeyId:"Specify your access key ID",secretAccessKey:"Specify your secret access key",cert:"Upload a self-signed SSL certificate"},noSearchMatch:"No settings match your search.",vlanChangeTip:"The newly modified default network interface only applies to newly added nodes, not existing ones.",defaultPhysicalNIC:"Default Network Interface",modifiedMessage:"Settings that have been customized from default settings are tagged with 'Modified'.",percentTip:"The value in parentheses represents the distribution percentage of the network interface on all hosts. If an interface less than 100% is selected, the user needs to manually specify the network interface on the host where the vlan network configuration fails.",message:{ca:{prefix:"Click",middle:"here",suffix:"to add a custom certificate."}},sslCertificates:{publicCertificate:"Public Certificate",privateKey:"Private Key",ca:"CA"},rancherCluster:{kubeConfig:"Rancher KubeConfig",removeUpstreamClusterWhenNamespaceIsDeleted:"Remove Upstream Cluster When Namespace Is Deleted"},clusterPodSecurityStandard:{whitelistedNamespaces:{label:"Whitelisted Namespaces"},privilegedNamespaces:{label:"Privileged Namespaces"},restrictedNamespaces:{label:"Restricted Namespaces"}},storageNetwork:{range:{placeholder:"e.g. 172.16.0.0/24",label:"IP Range",invalid:'"Range" is invalid.'},clusterNetwork:"Cluster Network",vlan:"VLAN ID",exclusiveVlan:"Exclusive VLAN",exclude:{label:"Exclude IPs",placeholder:"CIDR format, e.g. 172.16.0.10/32",invalid:'"Exclude list" is invalid.',addIp:"Add Exclude IP"},warning:"WARNING: Any change to storage-network requires shutting down all virtual machines before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.",tip:'Specify an IP range in the IPv4 CIDR format. Number of IPs Required = Number of Nodes * 2 + Number of Disks * 2 + Number of Images to Download/Upload . For more information about storage network settings, see the documentation .'},rwxNetwork:{warning:"WARNING: Any change to rwx-network requires longhorn RWX volumes detached before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.",shareStorageNetwork:"Share Storage Network",dedicatedRwxNetwork:"Dedicated RWX Network",shareStorageNetworkWarning:"The rwx-network is governed by storage-network, and changes here won't take effect until share-storage-network is set to false."},vmForceDeletionPolicy:{period:"Period",vmMigrationTimeout:"VM Migration Timeout"},vmMigrationNetwork:{parseError:"Failed to parse existing configuration.",fetchError:"Failed to load required network resources: {error}. Please refresh the page or try again later.",clusterNetwork:"Cluster Network",vlan:"VLAN ID",range:{placeholder:"e.g. 172.16.0.0/24",label:"IP Range",invalid:'"Range" is invalid.'},exclude:{label:"Excluded IPs",placeholder:"e.g. 172.16.0.1/32",invalid:'"Exclude list" is invalid.',addButton:"Add Exclude IP"}},ratio:"Ratio",autoRotateRKE2Certs:{expiringInHours:"Expiring in"},httpProxy:{warning:'WARNING: If you configure "http-proxy" and "https-proxy", you must also put Harvester node's CIDR into "no-proxy", otherwise the Harvester cluster will be broken.'},supportBundleImage:{imagePullPolicy:"Pull Policy",repo:"Repository",tag:"Tag"},csiDriverConfig:{provisioner:"Provisioner",volumeSnapshotClassName:"Volume Snapshot Class Name",backupVolumeSnapshotClassName:"Backup Volume Snapshot Class Name"},csiOnlineExpandValidation:{provisioner:"Provisioner",value:"Value",invalidJsonFormat:"Configuration value is not a valid JSON format: {error}",failedToLoadDrivers:"Failed to load CSI drivers. Error: {error}"},containerdRegistry:{mirrors:{mirrors:"Mirrors",registryName:"Registry Name",endpoints:"Endpoints",rewrite:{rewrite:"Rewrite",addRewrite:"Add Rewrite"},addMirror:"Add Mirror"},configs:{configs:"Configurations",registryEDQNorIP:"Registry FDQN or IP",registryPlaceholder:"myregistry.local:5000",username:"Username",password:"Password",auth:"Auth",identityToken:"Identity Token",insecureSkipVerify:"InsecureSkipVerify",addConfig:"Add Configuration"}},upgrade:{unknownImageName:"Image name is not found.",imageUrl:"Please input a valid image URL.",chooseFile:"Please select to upload an image.",checksum:"Checksum",networkError:"Unable to upload the image. Resolve network issues that may have occurred and try again.",cancelUpload:"Cancelled the image upload.",uploadSuccess:"{name} uploaded successfully. Press Upgrade button to start the cluster upgrade process.",deleteImage:"Please select an image to delete.",deleteSuccess:"{name} deleted successfully.",imagePreloadStrategy:"Image Preload Strategy",nodeUpgradeOption:"Node Upgrade Option",restoreVM:"Restore VM",strategy:"Strategy",pauseNodes:"Pause Nodes",strategyType:"Strategy Type",concurrency:"Concurrency"},harvesterMonitoring:{label:"Harvester Monitoring",section:{prometheus:"Prometheus",prometheusNodeExporter:"Prometheus Node Exporter",grafana:"Grafana",alertmanager:"Alertmanager"},tips:{scrape:"Interval between consecutive scrapes",evaluation:"Interval between consecutive evaluations",retention:"How long to retain metrics",retentionSize:"Maximum size of metrics"}},clusterRegistrationUrl:{url:"URL",insecureSkipTLSVerify:"Insecure Skip TLS Verify",tip:{prefix:'Harvester secures cluster registration via TLS by default. If opt out "Insecure Skip TLS Verify", you must provide custom CA certificates using the',middle:"additional-ca",suffix:"setting."},message:"To completely unset the imported Harvester cluster, please also remove it on the Rancher Dashboard UI via the Virtualization Management page."},ntpServers:{isNotIPV4:"The address you entered is not IPv4 or host. Please enter a valid IPv4 address or a host address.",isDuplicate:"There are duplicate NTP server configurations."},instanceManagerResources:{parseError:"Failed to parse configuration: {error}",v1:"V1 Data Engine",v2:"V2 Data Engine"},kubevirtMigration:{parseError:"Failed to parse configuration: {error}",parallelMigrationsPerCluster:"Parallel Migrations Per Cluster",parallelOutboundMigrationsPerNode:"Parallel Outbound Migrations Per Node",bandwidthPerMigration:"Bandwidth Per Migration",bandwidthPerMigrationTooltip:"0 is KubeVirt default, representing unlimited bandwidth",completionTimeoutPerGiB:"Completion Timeout Per GiB",progressTimeout:"Progress Timeout",allowAutoConverge:"Allow Auto Converge",allowPostCopy:"Allow Post Copy",unsafeMigrationOverride:"Unsafe Migration Override",allowWorkloadDisruption:"Allow Workload Disruption",disableTLS:"Disable TLS",matchSELinuxLevelOnMigration:"Match SELinux Level On Migration"}},cloudTemplate:{label:"Cloud Configuration Templates",templateType:"Template Type",userData:"User Data",networkData:"Network Data"},support:{title:"Harvester Support",kubeconfig:{title:"Download KubeConfig",titleDescription:"Download kubeconfig for debugging."},internal:{rancher:{title:"Access Embedded Rancher UI",titleDescription:'You can only use the embedded Rancher UI for debugging and validation purposes. For more information about how Harvester integrates with Rancher, see the documentation .'},longhorn:{title:"Access Embedded Longhorn UI",titleDescription:"We only support to use the embedded Longhorn UI for debugging and validation purpose."}},community:{learnMore:"Find out more about SUSE Harvester support",pricing:"Contact us for pricing"}},namespace:{label:"Namespaces"},projectNamespace:{label:"Projects/Namespaces"},vip:{namespace:{label:"Namespace"},cidr:{label:"CIDR/IP Range",invalid:'"CIDR/IP Range" is invalid.',toolTip:"We can apply multiple pools or ranges by separating them with commas. For example: 192.168.0.200/30,192.168.0.200/29 or 192.168.0.10-192.168.0.11"},add:{label:"Add IP Pools"}},sslParameters:{protocols:{label:"Protocols"},ciphers:{label:"Ciphers"}},monitoring:{configuration:{label:"Configuration"},alertmanagerConfig:{label:"Alertmanager Configurations",diabledMonitoringTips:{prefix:"Enable the",middle:"monitoring",suffix:"add-on first."},diabledAlertingTips:{prefix:"Enable",middle:"Alertmanager",suffix:"for configuration to take effect."},disabledAddon:{prefix:"The monitoring add-on is disabled, click",middle:"here",suffix:"to enable it."}}},logging:{configuration:{section:{fluentbit:"Fluentbit",fluentd:"Fluentd"}},clusterFlow:{label:"Cluster Flows"},clusterOutput:{label:"Cluster Outputs"},flow:{label:"Flows"},output:{label:"Outputs"},diabledTips:{prefix:"Enable",middle:"logging",suffix:"for configuration to take effect."}},snapshot:{totalSnapshotSize:"Total Snapshot Size",label:"Volume Snapshots",targetVolume:"Original Volume",size:"Size",image:"Image"},vmSnapshot:{label:"Virtual Machine Snapshots",createText:"Restore Snapshot",title:"Restore Virtual Machine",snapshot:"Snapshot"},storage:{label:"Storage",useDefault:"Use the default storage",volumeEncryption:"Volume Encryption",secret:"Secret",volumeExpansionCheckbox:"Enable Expansion",migratable:{label:"Migratable"},numberOfReplicas:{label:"Number Of Replicas"},staleReplicaTimeout:{label:"Stale Replica Timeout"},nodeSelector:{label:"Host Selector"},diskSelector:{label:"Disk Selector"},storageClass:{label:"Storage Class",longhorn:{v1:{label:"Longhorn V1 (CSI)"},v2:{label:"Longhorn V2 (CSI)"},versionTooltip:"Longhorn V2 is disabled for this node."},lvm:{label:"LVM"}},title:"Storage Classes",customize:{volumeBindingMode:{later:"Bind and provision a persistent volume once a virtual machine using the PersistentVolumeClaim is created"}},parameters:{numberOfReplicas:{label:"Number Of Replicas"},staleReplicaTimeout:{label:"Stale Replica Timeout"},diskSelector:{label:"Disk Selector","no-options":"No available tags, please add in the `Host > Storage` page"},nodeSelector:{label:"Node Selector","no-options":"No available tags, please add in the `Host > Storage` page"},migratable:{label:"Migratable"},lvmVolumeGroupType:{label:"Volume Group Type"},lvmVolumeGroup:{label:"Volume Group Name","no-options":"No available Volume Groups, please add in the `Host > Storage` page"},node:{label:"Node"}},allowedTopologies:{title:"Allowed Topologies",tooltip:"Allowed Topologies helps scheduling virtual machines on hosts which match all of below expressions."},internal:{label:"Internal Storage Class",cannotDeleteTooltip:"Internal storage class volumes cannot be deleted",cannotDeleteOrDefaultTooltip:"Internal storage classes cannot be deleted or set as default"},cdiSettings:{label:"CDI Settings",volumeModeAccessModes:{label:"Volume Mode / Access Modes",tooltip:"Specifies the default volume mode and access modes.",add:"Add",volumeMode:"Volume Mode",accessModes:{label:"Access Modes"}},volumeSnapshotClass:{label:"Volume Snapshot Class",tooltip:"Sets the Volume Snapshot Class name to be used when taking snapshots of PVCs under this StorageClass."},cloneStrategy:{label:"Clone Strategy",tooltip:"Defines the clone strategy to use for volumes created with this StorageClass.",copy:"Copy",snapshot:"Snapshot",csiClone:"CSI Clone"},fileSystemOverhead:{label:"File System Overhead",tooltip:"Specifies the percentage of filesystem overhead to consider when calculating PVC size.",placeholder:"e.g. 0.05 (up to 3 decimal places, between 0 and 1)"}}},vlanConfig:{title:"Network Configuration",createNetworkConfig:"Create Network Configuration",action:{migrate:"Migrate"},titles:{nodeSelector:"Node Selector",uplink:"Uplink",bondOptions:"Bond Options",attributes:"Attributes",host:"Selected Hosts"},scheduling:{affinity:{allNodes:"Select all nodes",specificNode:"Select specific node",schedulingRules:"Select node(s) matching rules"}},uplink:{nics:{label:"NIC",addLabel:"Add NIC",overlayWarning:"The NIC selected here must match the NIC provided in the provider network.",placeholder:"Select a NIC that is available on all the selected nodes",validate:{available:'NIC "{nic}" is not available on the selected nodes'}},linkAttributes:{mtu:{label:"MTU"}},bondOptions:{mode:{label:"Mode"},miimon:{label:"Miimon",tooltip:"Miimon specifies the MII link monitoring frequency in milliseconds. -1 means to keep the original value."}}},nodeSelector:{matchingNodes:{matchesSome:'{matched, plural,\n =0 {Matches 0 of {total, number} Nodes.}\n =1 {Matches 1 of {total, number} Nodes: "{sample}"}\n other {Matches {matched, number} of {total, number} existing Nodes, including "{sample}"}\n}'}}},vlanStatus:{vlanConfig:{label:"Network Configuration",l2VlanMode:{access:"Access",trunk:"Trunk",label:"Mode"},vlanTrunk:{minId:"Minimum VLAN ID",maxId:"Maximum VLAN ID",add:"Add VLAN Trunk"}}},clusterNetwork:{title:"Cluster Network Configuration",create:{button:{label:"Create a Cluster Network"}},clusterNetwork:"There are no network configurations defined.",mgmt:"mgmt is a built-in cluster management network and does not support any additional network configurations.",notExist:'Cluster Network "{ clusterNetwork }" does not exist',notReady:'Cluster Network "{ clusterNetwork }" is not ready'},addons:{descriptions:{"harvester-system/vm-import-controller":"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.","harvester-system/pcidevices-controller":"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machine and guest clusters.","cattle-logging-system/rancher-logging":"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.","harvester-system/rancher-vcluster":"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.","cattle-monitoring-system/rancher-monitoring":"rancher-monitoring is an add-on that collects Harvester cluster and virtual machine metrics and allows you to view the metrics on an embedded dashboard and send alert(s) to remote servers.","vm-import-controller":"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.","pcidevices-controller":"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machines and guest clusters.","nvidia-driver-toolkit":"nvidia-driver-toolkit is an add-on to enable vGPU devices and assign them to Harvester virtual machines.","rancher-logging":"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.","rancher-monitoring":"rancher-monitoring is an add-on to collect Harvester cluster and virtual machine metrics, view them on the embedded dashboard, and send alert(s) to remote servers.","rancher-vcluster":"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.","harvester-seeder":"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.","harvester-system/harvester-seeder":"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.","harvester-csi-driver-lvm":"harvester-csi-driver-lvm is an add-on allowing users to create PVC through the LVM with local devices.",descheduler:"The virtual machine auto balance optimizes workload scheduling by evicting pods that are not optimally placed according to administrator-defined policies."},vmMigration:{generic:{unknown:"Unknown",identifier:"Identifier",podNetwork:"Pod Network",usedBy:"Used by:",vlan:"VLAN {id}",vCpu:"{count} vCPU",memoryGb:"{value} GB",memoryTb:"{value} TB",elapsed:{hoursAndMinutes:"{hours} {hours, plural, one {hour} other {hours}} and {minutes} {minutes, plural, one {minute} other {minutes}}",hours:"{hours} {hours, plural, one {hour} other {hours}}",minutes:"{minutes} {minutes, plural, one {minute} other {minutes}}"}},errors:{failedLoadPlans:"Failed to load migration plans",failedLoadVms:"Failed to load virtual machines",failedRefreshVms:"Failed to refresh virtual machines",failedLoadProviders:"Failed to load providers",failedLoadProvider:"Failed to load provider: {error}",failedResolveDetails:"Failed to resolve network and datastore details",failedDecodeCredentials:"Failed to decode provider credentials",connectionFailed:"Connection failed",providerNotReady:"Provider not ready"},labels:{dashboard:"Migration Overview",provider:"Providers",networkMap:"Network Maps",storageMap:"Storage Maps",plan:"Migration Plans",migration:"Migrations"},providerWizard:{title:"Create Provider",editTitle:"Edit Provider"},wizard:{title:"VM Migration",steps:{configureProvider:{label:"Provider",description:"Configure Provider"},selectVms:{label:"VMs",description:"Select VMs"},configureMappings:{label:"Mappings",description:"Define Mappings"},reviewMigration:{label:"Migration Plan",description:"Review Migration Plan"}}},fields:{username:"Username",password:"Password"},configureProvider:{title:"Configure Provider",description:"Connect to your VMware vCenter or ESXi host to discover virtual machines for migration",connectionDetails:"Connection Details",providerSelect:"Provider",createNew:"Create new provider",requirementsTitle:"Requirements",requirementsText:"To migrate virtual machines from VMware, you will need a vCenter Server running version 6.5 or higher with a user account that has at least read permissions, and the source environment must be network-accessible from Rancher.",name:"Name",urlLabel:"vCenter/ESXi URL",urlPlaceholder:"https://vcenter.example.com/sdk",urlHint:"Enter the full URL including https://",skipSsl:"Skip SSL certificate verification",skipSslHint:"Not recommended for production environments",testConnection:{action:"Test Connection",success:"Connection successful",error:"Connection failed",waiting:"Testing connection..."},testSuccess:"Connection test passed",testFailed:"Connection test failed",testMissingFields:"Please fill in all required fields before testing",testTimeout:"Connection test timed out — the provider did not report a status in time",save:"Save Provider and Continue",saveExisting:"Check Provider and Continue"},selectVms:{title:"Select Virtual Machines",description:"Select the virtual machines you want to migrate from the source provider",discovered:"{count} VMs discovered from",lastSynced:"Last synced {time} ago • ",refreshNow:"Refresh now",availableVms:"Available Virtual Machines",selected:"selected",saveSelection:"Save Selection and Continue",selectAllBanner:{pageOnly:"Your current selection includes only VMs currently shown on the page.",selectAll:"Select all {count} VMs from this provider",allSelected:"Your current selection includes all VMs.",clearSelection:"Clear Selection"},manualEntry:{title:"Add Virtual Machines",description:"No VMs were discovered from the provider inventory. Add VMs manually by entering their IDs and names.",vmId:"VM ID",vmIdPlaceholder:"e.g. vm-60527",add:"Add",added:"VMs added"},columns:{vmName:"VM Name",vmId:"VM ID",os:"Operating System",resources:"Resources",powerState:"Power State",network:"Network",datastore:"Datastore"}},dashboard:{title:"Virtual Machine Migration Overview",description:"Migrate virtual machines from VMware vSphere to Harvester using cold migration for data consistency. Create a migration plan to select VMs, map networks and storage, and prepare a migration to Harvester.",createPlan:"Create Migration",tableTitle:"Migrations",columns:{status:"Status",plan:"Migration Plan",progress:"Progress",mappings:"Mappings",duration:"Duration"},progress:{failed:"Failed",migration:"Migration",initializingMigration:"Initializing migration",finishedSuccessfully:"Finished Successfully",step:"Step {index}",vmCount:"{count} VMs",vmId:"id: {id}"}},configureMappings:{title:"Set Mappings",description:"Map VMware networks and datastores to Harvester and Longhorn target resources",save:"Save Mappings and Continue",noTemplate:"Start from scratch",removeMap:"Remove Map",networkMapping:{title:"Network Mapping",description:"Map VMware port groups to Harvester networks",placeholder:"Choose a Harvester network",template:"Use existing network mapping as template",options:{podNetworking:"Management Network",ignored:"Ignored"}},storageMapping:{title:"Storage Mapping",description:"Map VMware datastores to Harvester storage classes",placeholder:"Choose a Longhorn Storage Volume",template:"Use existing storage mapping as template"}},reviewMigration:{title:"Review Migration Plan",description:"Confirm your migration settings before starting the transfer of VMs to the target cluster.",planName:"Name",planNamePlaceholder:"e.g. my-migration-plan",migrationDetails:"Migration Details",totalVms:"Total VMs",vcpu:"vCPU",memory:"Memory",storage:"Storage",source:"Source",targetNamespace:"Target Namespace",migrationMode:"Migration Mode",coldMigration:"Cold Migration",virtualMachines:"Virtual Machines",warningTitle:"Cold Migration Warning",warningMessage:"All source VMs will be powered off, and downtime will occur during migration. Plan your maintenance window accordingly and notify relevant stakeholders",startMigration:"Start Migration Plan"},plan:{states:{error:"Error",canceled:"Canceled",inProgress:"In Progress",active:"Succeeded"},actions:{start:"Start",restart:"Restart",stop:"Stop"}},deleteDialog:{warning:"Deleting this migration plan will also delete the following related resources"}},vmImport:{titles:{basic:"Basic",auth:"Authentication",pvc:"Volume",networking:"Network Mapping",advanced:"Advanced"},labels:{vmimport:"Virtual Machine Import",vmimportSourceVMWare:"Source VMWare",vmimportSourceOpenStack:"Source OpenStack",vmimportSourceOVA:"Source OVA"},fields:{sourceProvider:"Source Provider Type",sourceCluster:"Source Cluster",vmName:"VM Name",targetStorageClass:"Target Storage Class",sourceNetwork:"Source Network Name",destNetwork:"Destination Network",interfaceModel:"Interface Model",folder:"Folder",diskBus:"Default Disk Bus",defaultInterface:"Default Network Interface",skipPreflight:"Skip Preflight Checks",forcePowerOff:"Force Power Off Source VM",username:"Username",password:"Password",caCert:"CA Certificate (PEM)",selectSecret:"Select Secret",createSecret:"Create New Credentials",useSecret:"Use Existing Secret",none:"None (Public URL)"},placeholders:{selectCluster:"Select a cluster...",selectProviderFirst:"Select a provider type first",matchSource:"Must match the name in the source cluster",folderExample:"e.g. /Datacenters/DC1/vm",caCert:"-----BEGIN CERTIFICATE----- ..."},options:{useDefault:"Use Default"},actions:{addNetwork:"Add Network Mapping",remove:"Remove"},errors:{rfc1123:'Invalid format. Name must be lowercase, alphanumeric, and cannot contain spaces (e.g. "my-vm-1"). If your Source VM name does not match this, you must rename it on the Source cluster first.',networkMappingRequired:"Every Network Mapping row must have a Source and Destination selected."},openstack:{fields:{endpoint:"Identity Service Endpoint",region:"Region",projectName:"Project Name",domainName:"Domain Name",retryCount:"Upload Image Retry Count",retryDelay:"Upload Image Retry Delay"},placeholders:{endpoint:"e.g. https://devstack/identity",region:"e.g. RegionOne",projectName:"e.g. admin",domainName:"e.g. default",retryCount:"Default: 30",retryDelay:"Default: 10"}},vmware:{fields:{endpoint:"vCenter Endpoint",datacenter:"Datacenter"},placeholders:{endpoint:"e.g. https://vscim/sdk",datacenter:"e.g. DC0"},tooltips:{datacenter:"The exact name of the Datacenter object in vCenter"}},ova:{fields:{url:"URL",httpTimeout:"HTTP Timeout"},placeholders:{url:"e.g. https://download.example.com/images/my-vm.ova",httpTimeout:"Default: 600"}}},rancherVcluster:{accessRancher:"Access the Rancher Dashboard",hostname:"Hostname",rancherVersion:"Rancher Version",password:"Bootstrap Password"},switchFailed:"{action} {name} failed!",nvidiaDriverToolkit:{titles:{basic:"Controller",image:"Image",driver:"Driver"},image:{tag:"Image Tag",repository:"Image Repository"},driver:{location:"Driver Location"},enable:{title:"Enable NVIDIA Driver Toolkit"},parsingSpecError:"The field 'spec.valuesContent' has invalid format."},usbController:{titles:{basic:"Basic"}}},loadBalancer:{label:"Load Balancers",tabs:{basic:"Basic",listeners:"Listeners",healthCheck:"Health Check",backendServer:"Backend Server Selector"},workloadType:{label:"Workload Type",options:{cluster:"Guest Kubernetes Cluster",vm:"Virtual Machine"}},ipam:{label:"IPAM",options:{dhcp:"DHCP",pool:"Pool"}},ipPool:{label:"IP Pool",options:{none:"Auto (Select IP Pool automatically)"}},listeners:{name:{label:"Name"},protocol:{label:"Protocol"},port:{label:"Port"},backendPort:{label:"Backend Port",placeholder:"e.g. 80"}},backendServerSelector:{matchingVMs:{matchesSome:'{matched, plural,\n =0 {Matches 0 of {total, number} virtual machines in the namespace where the load balancer is.}\n =1 {Matches 1 of {total, number} virtual machines in the namespace where the load balancer is: "{sample}"}\n other {Matches {matched, number} of {total, number} existing virtual machines in the namespace where the load balancer is, including "{sample}"}\n}'}},backendServers:{label:"Backend Servers"},healthCheck:{warning:{portInUse:"Warning, the Backend Port {port} is in use in Health Check settings. If you need to update the port, update the Health Check settings accordingly."}}},ipPool:{label:"IP Pools",network:{label:"Virtual Machine Network"},tabs:{range:"Range",scope:"Scope",selector:"Selector"},subnet:{label:"Subnet"},startIP:{label:"Start IP"},endIP:{label:"End IP"},gateway:{label:"Gateway"},namespace:{label:"Namespace"},project:{label:"Project"},guestCluster:{label:"Guest Kubernetes Cluster"},availableIP:{label:"Available IP Count"},scope:{label:"Scope",addLabel:"Add Scope"},priority:{label:"Priority"},cidr:{addLabel:"Add CIDR"},range:{addLabel:"Add Range"}},hostNetworkConfig:{label:"Host Networks",mode:{label:"Mode"},tabs:{mode:"Mode",nodeSelector:"Node Selector"},nodeSelector:{addButton:"Add Node Selector"},underlay:{label:"Underlay",tooltip:"Allow this interface to act as the underlay for VM overlay networks.",conflict:"`{name}` host network config already has underlay enabled. Only one underlay is allowed in the cluster.",noKubeovn:{prefix:"The kubeovn-operator add-on is not enabled. Click",middle:"here",suffix:"to enable the add-on for overlay networking."}},vlanID:{label:"VLAN ID"},ipRange:{label:"IP Range ({node})",placeholder:"e.g. 192.168.1.10/24"},ips:{nodeLabel:"Node",label:"IP",placeholder:"e.g. 192.168.1.10/24"}},service:{healthCheckPort:{label:"Health Check Port"},healthCheckSuccessThreshold:{label:"Health Check Success Threshold",description:"If the number of times the probe continuously detects an address successfully reaches the success threshold, then the backend server can start to forward traffic."},healthCheckFailureThreshold:{label:"Health Check Failure Threshold",description:"The backend server will stop forwarding traffic if the number of health check failures reaches the failure threshold."},healthCheckPeriod:{label:"Health Check Period"},healthCheckTimeout:{label:"Health Check Timeout"},healthCheckEnabled:{label:"Health Check"}},secret:{label:"Secrets"},sriov:{label:"SR-IOV Network Devices",nodeName:"Node",numVFs:"Number Of Virtual Functions",vfAddresses:"Virtual Functions Addresses",showMore:"Show More",parentSriov:"Filter By Parent SR-IOV Netork Device",parentSriovGPU:"Filter By Parent SR-IOV GPU Device"},sriovgpu:{label:"SR-IOV GPU Devices",nodeName:"Node",numVFs:"Number of Virtual Functions",vfAddresses:"Virtual Functions Addresses",vGpuDevices:"vGPU Devices",showMore:"Show More",parentSriov:"Filter By Parent SR-IOV GPU",noPermission:"Please contact your system administrator to add Harvester add-ons first.",goSetting:{prefix:"The nvidia-driver-toolkit add-on is not enabled, click",middle:"here",suffix:"to enable it to manage your SR-IOV GPU devices."}},migconfiguration:{label:"vGPU MIG Configurations",status:{outOfSync:"Out of Sync"},infoBanner:"To configure the MIG configuration, please disable it first and re-enable after editing the configuration.",profileSpec:"Profile Specs",profileStatus:"Profile Status",tableHeaders:{profileName:"Profile Name",total:"Total",vGPUID:"vGPU ID",available:"Available",requested:"Requested"},requested:"Requested",available:"Available",total:"Total",vGPUID:"vGPU ID",goSriovGPU:{prefix:"Please enable the supported GPU devices in",middle:"SR-IOV GPU Devices",suffix:"page to manage the vGPU MIG configurations."}},vgpu:{label:"vGPU Devices",noPermission:"Please contact system administrator to add Harvester add-ons first.",detachWarning:{title:"Cannot Disable vGPU",message:"Please detach the device from the VM and save it first before disabling this vGPU device."},goSetting:{prefix:"The nvidia-driver-toolkit add-on is not enabled, click",middle:"here",suffix:"to enable it to manage your vGPU devices."},enableGroup:"Enable Group",disableGroup:"Disable Group",enable:{title:"Select vGPU",type:"Type"},available:"Available Devices",compatibleNodes:"Compatible Nodes",impossibleSelection:"There are no hosts with all of the selected devices.",howToUseDevice:"Use the table below to enable vGPU devices you want to use in this virtual machine.",deviceInTheSameHost:"You can only select devices on the same host."},usb:{label:"USB Devices",noPermission:"Please contact system admin to add Harvester add-ons first",goSetting:{prefix:"The pcidevices-controller add-on is not enabled, click",middle:"here",suffix:"to enable it to manage your USB devices."},enableGroup:"Enable Group",disableGroup:"Disable Group",available:"Available USB Devices",compatibleNodes:"Compatible Nodes",impossibleSelection:"There are no hosts with all of the selected devices.",howToUseDevice:"Use the table below to enable USB passthrough on each device you want to use in this VM.",deviceInTheSameHost:"You can only select devices on the same host.",showCompatibility:"Show device compatibility matrix",hideCompatibility:"Hide device compatibility matrix",claimError:"Error enabling passthrough on {name}",unclaimError:"Error disabling passthrough on {name}",cantUnclaim:"You cannot disable passthrough on a device claimed by another user.",detachWarning:{title:"Cannot Disable Passthrough",message:"Please detach the device from the VM and save it first before disabling passthrough."},enablePassthroughWarning:"Please re-enable the USB device if the device path changes in the following situations:  1) Re-plugging the USB device.  2) Rebooting the node. An incorrect device path may cause passthrough to fail.",classType:"Class Type"},harvesterVlanConfigMigrateDialog:{targetClusterNetwork:{label:"Target Cluster Network",placeholder:"Choose Target Cluster Network"}},seeder:{banner:{enable:{prefix:'The "harvester-seeder" add-on is disabled.',middle:"Click here",suffix:"to enable it."},noAccess:"Please contact your system administrator to enable the Out-of-Band Access first.",noAddon:'The "harvester-seeder" add-on does not exist, please check if it is installed.',noInventory:'Waiting for "inventories.metal.harvesterhci.io" to be ready.'},inventory:{host:{label:"Host",placeholder:"e.g. 172.16.1.1"},port:{label:"Port",placeholder:"e.g. 623"},insecureTLS:{label:"Insecure TLS"},secret:{label:"Secret",create:{title:"Add Secret"}},event:{label:"Event"},pollingInterval:{label:"Polling Interval"}}}},typeDescription:{harvester:"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos and color scheme."},advancedSettings:{experimental:"Experimental features allow users to test and evaluate early-access functionality prior to official supported releases",descriptions:{"harv-vlan":"Default Network Interface name of the VLAN network.","harv-backup-target":"Custom backup target to store virtual machine backups.",branding:"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos, and color scheme.","harv-csi-driver-config":"Configure additional information for CSI drivers.","harv-csi-online-expand-validation":"Allow online volume expansion for specific CSI drivers.","harv-containerd-registry":"Containerd Registry Configuration to connect private registries.","harv-log-level":"Configure Harvester server log level. Defaults to Info.","harv-server-version":"Harvester server version.","harv-upgrade-checker-enabled":"Specifies whether to enable Harvester upgrade check or not. Default is True.","harv-upgrade-checker-url":"Default Harvester upgrade check url. Only used when the upgrade-checker-enabled is equal to True.","harv-ui-source":"Configure how to load the UI source. The `External` option is used to load the UI from a ui-index URL, while the `Bundled` option loads the UI from the local Harvester server.","harv-ui-index":"HTML index location for the UI.","harv-cluster-registration-url":"Registration URL for multi-cluster management.","harv-http-proxy":"HTTP proxy for Harvester to access external services.","harv-additional-ca":"Custom CA root certificates for TLS validation.","harv-overcommit-config":"Resource overcommit configuration.","harv-support-bundle-timeout":"Support bundle timeout configuration in minutes, use 0 to disable the timeout.","harv-support-bundle-file-name":"Support bundle file name configuration.","harv-support-bundle-expiration":"Support bundle expiration configuration in minutes.","harv-support-bundle-node-collection-timeout":"Support bundle node collection timeout configuration in minutes.","harv-vm-force-reset-policy":"Configuration for the force-reset action when a virtual machine is stuck on a node that is down.","harv-ssl-parameters":"Custom SSL Parameters for TLS validation.","harv-storage-network":"Longhorn storage-network setting.","harv-rwx-network":"Configure RWX network behavior for shared or dedicated storage network usage.","harv-support-bundle-namespaces":"Select additional namespaces to include in the support bundle.","harv-auto-disk-provision-paths":"Specify the disks(using glob pattern) that Harvester will automatically add as virtual machine storage.","harv-support-bundle-image":'Support bundle image configuration. Find different versions in rancher/support-bundle-kit .',"harv-release-download-url":"This setting allows you to configure the upgrade release download URL address. Harvester will get the ISO URL and checksum value from the ($URL/$VERSION/version.yaml) file hosted by the configured URL.","harv-default-vm-termination-grace-period-seconds":"Configure the virtual machine termination grace period for virtual machine stop.","harv-ntp-servers":"Configure NTP server. You can configure multiple IPv4 addresses or host addresses.","harv-auto-rotate-rke2-certs":"The certificate rotation mechanism relies on Rancher. Harvester will automatically update certificates generation to trigger rotation.","harv-kubeconfig-default-token-ttl-minutes":"TTL (in minutes) applied on Harvester administration kubeconfig files. Default is 0, which means to never expire.","harv-longhorn-v2-data-engine-enabled":'Enable the Longhorn V2 data engine. Default is false. Changing this setting will restart RKE2 on all nodes. This will not affect running VM workloads. If you see "not enough hugepages-2Mi capacity" errors when enabling this setting, wait a minute for the error to clear. If the error remains, reboot the affected node. ',"harv-longhorn-v2-data-engine-hugepage-enabled":"Enable hugepages when using the Longhorn V2 data engine. Default is true. Disabling hugepages reduces memory pressure on low-spec nodes and increases deployment flexibility. However, performance may be lower compared to running with hugepages.","harv-longhorn-v2-data-engine-memory-size":"Configure the amount of memory allocated to the SPDK target daemon when using the Longhorn V2 data engine. Default is 2048 MiB.","harv-additional-guest-memory-overhead-ratio":"The ratio for kubevirt to adjust the VM overhead memory. The value could be zero, empty value or floating number between 1.0 and 10.0, default to 1.5.","harv-upgrade-config":'Configure image preloading and VM restore options for upgrades. See related fields in settings/upgrade-config ',"harv-vm-migration-network":"Segregated network for VM migration traffic.","harv-rancher-cluster":"Configure Rancher cluster integration settings for guest cluster management.","harv-max-hotplug-ratio":"The ratio for kubevirt to limit the maximum CPU and memory that can be hotplugged to a VM. The value could be an integer between 1 and 20, default to 4.","harv-kubevirt-migration":"Configure cluster-wide KubeVirt live migration parameters.","harv-instance-manager-resources":"Configure resource percentage reservations for Longhorn instance manager V1 and V2. Valid instance manager CPU range between 0 - 40.","harv-cluster-pod-security-standard":"Enforce Kubernetes Pod Security Standards (PSS) at the cluster level."}},typeLabel:{"kubevirt.io.virtualmachine":"{count, plural,\n one { Virtual Machine }\n other { Virtual Machines }\n}","harvesterhci.io.virtualmachineimage":"{count, plural,\n one { Image }\n other { Images }\n}","harvesterhci.io.keypair":"{count, plural,\n one { SSH Key }\n other { SSH Keys }\n}","harvesterhci.io.host":"{count, plural,\n one { Host }\n other { Hosts }\n}","harvesterhci.io.networkattachmentdefinition":"{count, plural,\n one { Virtual Machine Network }\n other { Virtual Machine Networks }\n}","harvesterhci.io.volume":"{count, plural,\n one { Volume }\n other { Volumes }\n}","harvesterhci.io.user":"{count, plural,\n one { User }\n other { Users }\n}","harvesterhci.io.setting":"{count, plural,\n one { Setting }\n other { Settings }\n}","harvesterhci.io.virtualmachinetemplateversion":"{count, plural,\n one { Template }\n other { Templates }\n}","harvesterhci.io.schedulevmbackup":"{count, plural,\n one { Virtual Machine Schedule }\n other { Virtual Machine Schedules }\n}","harvesterhci.io.virtualmachinebackup":"{count, plural,\n one { Virtual Machine Backup }\n other { Virtual Machine Backups }\n}","kubeovn.io.vpc":"{count, plural,\n one { Virtual Private Cloud }\n other { Virtual Private Clouds }\n}","kubeovn.io.vlan":"{count, plural,\n one { VLAN Network }\n other { VLAN Networks }\n}","kubeovn.io.providernetwork":"{count, plural,\n one { Provider Network }\n other { Provider Networks }\n}","kubeovn.io.vpcnatgateway":"{count, plural,\n one { NAT Gateway }\n other { NAT Gateways }\n}","kubeovn.io.iptablessnatrule":"{count, plural,\n one { Source Rule }\n other { Source Rules }\n}","kubeovn.io.iptablesdnatrule":"{count, plural,\n one { Destination Rule }\n other { Destination Rules }\n}","kubeovn.io.iptableseip":"{count, plural,\n one { External IP }\n other { External IPs }\n}","networking.k8s.io.networkpolicy":"{count, plural,\n one { Network Policy }\n other { Network Policies }\n}","harvesterhci.io.cloudtemplate":"{count, plural,\n one { Cloud Configuration Template }\n other { Cloud Configuration Templates }\n}","harvesterhci.io.volumesnapshot":"{count, plural,\n one { Volume Snapshot }\n other { Volume Snapshots }\n}","harvesterhci.io.vmsnapshot":"{count, plural,\n one { Virtual Machine Snapshot }\n other { Virtual Machine Snapshots }\n}","network.harvesterhci.io.vlanconfig":"{count, plural,\n one { Network Configuration }\n other { Network Configurations }\n}","harvesterhci.io.monitoring.alertmanagerconfig":"{count, plural,\n one { Alertmanager Configuration }\n other { Alertmanager Configurations }\n}","harvesterhci.io.logging.clusterflow":"{count, plural,\n one { Cluster Flow }\n other { Cluster Flows }\n}","harvesterhci.io.logging.clusteroutput":"{count, plural,\n one { Cluster Output }\n other { Cluster Outputs }\n}","harvesterhci.io.logging.flow":"{count, plural,\n one { Flow }\n other { Flows }\n}","harvesterhci.io.logging.output":"{count, plural,\n one { Output }\n other { Outputs }\n}","harvesterhci.io.storage":"{count, plural,\n one { Storage Class }\n other { Storage Classes }\n}","devices.harvesterhci.io.pcidevice":"{count, plural,\n one { PCI Device }\n other { PCI Devices }\n}","network.harvesterhci.io.clusternetwork":"{count, plural,\n one { Cluster Network }\n other { Cluster Networks }\n}","network.harvesterhci.io.hostnetworkconfig":"{count, plural,\n one { Host Network }\n other { Host Networks }\n}","harvesterhci.io.addon":"{count, plural,\n one { Add-on }\n other { Add-ons }\n}","devices.harvesterhci.io.sriovnetworkdevice":"{count, plural,\n one { SR-IOV Network Device }\n other { SR-IOV Network Devices }\n}","devices.harvesterhci.io.sriovgpudevice":"{count, plural,\n one { SR-IOV GPU Device }\n other { SR-IOV GPU Devices }\n}","devices.harvesterhci.io.vgpudevice":"{count, plural,\n one { vGPU Device }\n other { vGPU Devices }\n}","devices.harvesterhci.io.migconfiguration":"{count, plural,\n one { vGPU MIG Configuration }\n other { vGPU MIG Configurations }\n}","harvesterhci.io.secret":"{count, plural,\n one { Secret }\n other { Secrets }\n}","harvesterhci.io.blockdevice":"{count, plural,\n one { Disk }\n other { Disks }\n}","loadbalancer.harvesterhci.io.loadbalancer":"{count, plural,\n one { Load Balancer }\n other { Load Balancers }\n}","loadbalancer.harvesterhci.io.ippool":"{count, plural,\n one { IP Pool }\n other { IP Pools }\n}","migration.harvesterhci.io.openstacksource":"{count, plural,\n one { OpenStack Source }\n other { OpenStack Sources }\n}","migration.harvesterhci.io.vmwaresource":"{count, plural,\n one { VMware Source }\n other { VMware Sources }\n}","migration.harvesterhci.io.ovasource":"{count, plural,\n one { OVA Source }\n other { OVA Sources }\n}","migration.harvesterhci.io.virtualmachineimport":"{count, plural,\n one { Virtual Machine Import }\n other { Virtual Machine Imports }\n}","forklift.konveyor.io.provider":"{count, plural,\n one { Provider }\n other { Providers }\n}","forklift.konveyor.io.networkmap":"{count, plural,\n one { Network Map }\n other { Network Maps }\n}","forklift.konveyor.io.storagemap":"{count, plural,\n one { Storage Map }\n other { Storage Maps }\n}","forklift.konveyor.io.plan":"{count, plural,\n one { Migration Plan }\n other { Migration Plans }\n}","forklift.konveyor.io.migration":"{count, plural,\n one { Migration }\n other { Migrations }\n}"}}];e.exports=t.length<=1?t[0]:t}}]);
//# sourceMappingURL=harvester-1.9.0-rc2.umd.min.37.js.map
\ No newline at end of file
diff --git a/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js.map b/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js.map
index 543254ac..e6b45bc5 100644
--- a/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js.map
+++ b/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.37.js.map
@@ -1 +1 @@
-{"version":3,"file":"harvester-1.9.0-rc2.umd.min.37.js","mappings":"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","sources":["webpack://harvester-1.9.0-rc2/./l10n/en-us.yaml"],"sourcesContent":["const doc = [({\"wizard\":({\"create\":\"Create\", \"next\":\"Proceed\", \"previous\":\"Back\"}), \"generic\":({\"tip\":\"Tip\", \"resourceExternalLinkTips\":\"External Link\", \"namespace\":\"Namespace\", \"notReady\":\"Not Ready\", \"labels\":\"Labels\", \"inProgress\":\"In Progress\", \"basic\":\"Basic\", \"loading\":\"Loading...\", \"none\":\"None\", \"duration\":({\"infinite\":\"Infinite\", \"1s\":\"1 second\", \"5s\":\"5 seconds\", \"10s\":\"10 seconds\", \"30s\":\"30 seconds\", \"1m\":\"1 minute\", \"3m\":\"3 minutes\", \"5m\":\"5 minutes\"})}), \"unsupported\":({\"serverVersion\":\"Current version: {serverVersion}\", \"description\":\"Harvester ui only supports Harvester cluster version greater or equal to 1.3.0.\", \"learnMore\":\"Learn more about Harvester from the Harvester Web Site or read the Harvester Docs \"}), \"nav\":({\"group\":({\"networks\":\"Networks\", \"backupAndSnapshot\":\"Backup and Snapshots\", \"Monitoring\":\"Monitoring\", \"Logging\":\"Logging\", \"Monitoring and Logging\":\"Monitoring and Logging\", \"vmimport\":\"Virtual Machine Imports\", \"vmMigration\":\"Virtual Machine Migration\", \"Configurations\":\"Configurations\"})}), \"resourceTable\":({\"groupBy\":({\"device\":\"Group by Device\"})}), \"validation\":({\"arrayCountRequired\":\"At least {count} {key} {count, plural, =1 {is} other {are}} required, and {key} can not be empty.\"}), \"members\":({\"clusterMemebership\":\"Cluster Membership\", \"projectMembership\":\"Project Membership\"}), \"asyncButton\":({\"createAndStart\":({\"action\":\"Create and Start\"}), \"restart\":({\"action\":\"Save and Restart\", \"success\":\"Restarted\", \"waiting\":\"Restarting…\"})}), \"dialog\":({\"confirmExecution\":({\"title\":\"Are you sure?\", \"andOthers\":\"{count, plural,\\n=0 {}\\n=1 { and one other }\\nother { and {count} other }\\n}\", \"protip\":\"Tip: Hold the {alternateLabel} key while clicking action to bypass this confirmation\", \"stop\":({\"message\":\"Are you sure you want to stop the {type} {names}?\"}), \"pause\":({\"message\":\"Are you sure you want to pause the {type} {names}?\"}), \"restart\":({\"message\":\"Are you sure you want to restart the {type} {names}?\"}), \"softreboot\":({\"message\":\"Are you sure you want to soft reboot the {type} {names}?\"})}), \"promptRemove\":({\"title\":\"Delete {type}\", \"warningMessage\":\"Deleting the selected {type} permanently removes all resources on {thisOrThese} {type}. This action is irreversible. Do you want to continue?\", \"confirmName\":\"Type {nameToMatch} to delete the {type}:\", \"protip\":\"Tip: Hold the {alternateLabel} key while clicking Delete to bypass the confirmation step.\"})}), \"harvester\":({\"branding\":({\"logos\":({\"tip\":\"Upload a logo to replace the Harvester logo in the top-level navigation header. Image height should be 21 pixels with a max width of 200 pixels. Max file size is 20KB. Accepted formats: JPEG, PNG, SVG.\"}), \"favicon\":({\"tip\":\"Upload an icon to replace the Harvester favicon in the browser tab. Max file size is 20KB\"})}), \"productLabel\":\"Harvester\", \"modal\":({\"backup\":({\"success\":\"Backup { backUpName } has been initiated.\", \"addBackup\":\"Add Backup\", \"fileSystemFreezeDeadline\":({\"label\":\"File System Freeze Deadline\"})}), \"quota\":({\"editVMQuota\":\"Edit VM Quota\", \"editQuota\":\"Edit Quota\", \"bannerMessage\":\"Set to empty string or 0 to remove total snapshot size quota.\"}), \"restore\":({\"success\":\"Restore { name } created successfully.\", \"title\":\"Backup and Restore\", \"selectBackup\":\"Select Backup\", \"message\":({\"backup\":\"Please select the backup that needs to be restored.\"})}), \"createTemplate\":({\"title\":\"Generate Template\", \"name\":\"Name\", \"description\":\"Description\", \"message\":({\"tip\":\"Please enter a template name!\", \"success\":\"Template { templateName } created successfully.\", \"failed\":\"Failed generated template!\"})}), \"schedule\":({\"title\":\"Create Schedule\", \"message\":({\"tip\":\"Please enter a schedule name!\", \"success\":\"Schedule { name } created successfully.\", \"failed\":\"Failed create schedule!\"})}), \"cloneVM\":({\"title\":\"Clone Virtual Machine\", \"name\":\"New Virtual Machine Name\", \"type\":\"Clone volume data\", \"action\":({\"create\":\"Create\", \"clone\":\"Clone\"}), \"message\":({\"tip\":\"Please enter a virtual machine name!\", \"success\":\"Virtual machine { name } cloned successfully.\", \"failed\":\"Failed clone virtual machine!\"})}), \"osImage\":({\"title\":\"Delete Image\", \"message\":\"Are you sure you want to delete the image { name } ?\"}), \"downloadImage\":({\"title\":\"Download Image\", \"banner\":\"This action takes a while depending on the image size ({ size }). Please be patient.\", \"startMessage\":\"The download process will auto start once the conversion is complete.\", \"download\":\"Download\"}), \"exportImage\":({\"title\":\"Export to Image\", \"name\":\"Name\", \"namespace\":\"Namespace\", \"message\":({\"success\":\"Image { name } created successfully.\"})}), \"storageMigration\":({\"title\":\"Storage Migration\", \"fields\":({\"sourceVolume\":({\"label\":\"Source Volume\", \"placeholder\":\"Select a source volume\"}), \"targetVolume\":({\"label\":\"Target Volume\", \"placeholder\":\"Select a target volume\"})})}), \"dataMigration\":({\"title\":\"Data Migration\", \"fields\":({\"targetVolumeName\":({\"label\":\"Target Volume Name\", \"placeholder\":\"Enter a target volume name\"}), \"targetStorageClassName\":({\"label\":\"Target Storage Class\", \"placeholder\":\"Select a storage class\"})})}), \"migration\":({\"failedMessage\":\"Latest migration failed!\", \"title\":\"Migration\", \"vmMigrationTitle\":\"{count, plural, one {Migrating # VM} other {Migrating # VMs}}\", \"selectedVMs\":\"The following virtual machine(s) will be migrated to the target node\", \"unknownNode\":\"(unknown node)\", \"alreadyOnTarget\":\"Already on Target\", \"fields\":({\"nodeName\":({\"label\":\"Target Node\", \"placeholder\":\"Choose Target Node\"})})}), \"ejectCDROM\":({\"title\":\"Eject CD-ROM\", \"warnTip\":\"Eject volume will restart the virtual machine.\", \"operationTip\":\"Select the volume you want to delete:\", \"delete\":\"Delete\"}), \"bundle\":({\"title\":\"Generate a Support Bundle\", \"titleDescription\":\"Collect system-related logs in Harvester to assist with troubleshooting and support.\", \"tip\":\"Each field below specifies an aspect of the support bundle. For detailed explanations, please refer to the documentation .\", \"url\":\"Issue URL\", \"description\":\"Description\", \"namespaces\":({\"label\":\"Namespaces\", \"tooltip\":\"Select additional namespaces to include in the support bundle. See docs support-bundle-namespaces for detail.\", \"selectAll\":\"Select All\", \"unselectAll\":\"Unselect All\"}), \"timeout\":({\"label\":\"Timeout\", \"tooltip\":\"Minutes allows for completion of the support bundle generation process. See docs support-bundle-timeout for detail.\"}), \"expiration\":({\"label\":\"Expiration\", \"tooltip\":\"Minutes before deleting packaged but not downloaded support bundle. See docs support-bundle-expiration for detail.\"}), \"nodeTimeout\":({\"label\":\"Node Collection Timeout\", \"tooltip\":\"Minutes allowed for collecting logs/configurations on nodes. See docs support-bundle-node-collection-timeout for detail.\"})}), \"hotplugVolume\":({\"success\":\"Volume { diskName } is mounted to the virtual machine { vm }.\", \"title\":\"Add Volume\"}), \"hotplugNic\":({\"success\":\"The settings have been saved, but the network interface {interfaceName} will be attached only after the virtual machine is migrated.\", \"title\":\"Add Network Interface\", \"vmNetwork\":\"Virtual Machine Network\", \"macAddress\":\"MAC Address\", \"macAddressTooltip\":\"If left blank, the MAC address will be automatically generated.\"}), \"insertCdRomVolume\":({\"success\":\"{ imageName } is inserted into device { deviceName }.\", \"title\":\"Insert Image\", \"image\":\"Image\", \"actionLabel\":\"Insert Image\"}), \"cpuMemoryHotplug\":({\"success\":\"CPU and Memory are updated to the virtual machine { vm }.\", \"title\":\"Edit CPU and Memory\", \"maxResourcesMessage\":\"You can increase the CPU to maximum { maxCpu }C and memory to maximum { maxMemory }.\"}), \"snapshot\":({\"title\":\"Take Snapshot\", \"name\":\"Name\", \"message\":({\"success\":\"Take Snapshot { name } successfully.\"})}), \"volumeClone\":({\"title\":\"Clone Volume\", \"name\":\"Name\", \"message\":({\"success\":\"New Volume { name } cloned successfully.\"})}), \"restoreSnapshot\":({\"title\":\"Restore Snapshot\", \"name\":\"New Volume Name\", \"success\":\"New Volume { name } restored successfully.\"}), \"vmSnapshot\":({\"title\":\"Take Virtual Machine Snapshot\", \"name\":\"Name\", \"success\":\"Take virtual machine Snapshot { name } successfully.\", \"fileSystemFreezeDeadline\":({\"label\":\"File System Freeze Deadline\"})}), \"restart\":({\"title\":\"Restart Virtual Machine\", \"tip\":\"Restart the virtual machine for configuration changes to take effect.\", \"cancel\":\"Save\"})}), \"notification\":({\"title\":({\"succeed\":\"Succeed\", \"info\":\"Info\", \"warning\":\"Warning\", \"error\":\"Error\"}), \"restartRequired\":({\"title\":\"{count} {count, plural, =1 {Virtual Machine is} other {Virtual Machines are}} Pending Restart\", \"message\":\"Please restart { vmNames } to apply updated configurations\"})}), \"action\":({\"createVM\":\"Create Virtual Machine\", \"start\":\"Start\", \"restart\":\"Restart\", \"softreboot\":\"Soft Reboot\", \"stop\":\"Stop\", \"pause\":\"Pause\", \"deepClone\":\"Clone\", \"shallowClone\":\"Clone Template\", \"unpause\":\"Unpause\", \"encryptImage\":\"Encrypt Image\", \"decryptImage\":\"Decrypt Image\", \"ejectCDROM\":\"Eject CD-ROM\", \"editVMQuota\":\"Edit Virtual Machine Quota\", \"launchFormTemplate\":\"Launch instance from template\", \"modifyTemplate\":\"Modify template (Create new version)\", \"setDefaultVersion\":\"Set default version\", \"addTemplateVersion\":\"Add template version\", \"backup\":\"Take Backup\", \"createSchedule\":\"Create Schedule\", \"restore\":\"Restore\", \"restoreNewVM\":\"Restore New\", \"resumeSchedule\":\"Resume\", \"suspendSchedule\":\"Suspend\", \"restoreExistingVM\":\"Replace Existing\", \"migrate\":\"Migrate\", \"vmMigrate\":\"Virtual Machine Migration\", \"cpuAndMemoryHotplug\":\"Edit CPU and Memory\", \"abortMigration\":\"Abort Migration\", \"storageMigration\":\"Storage Migration\", \"cancelStorageMigration\":\"Cancel Storage Migration\", \"dataMigration\":\"Data Migration\", \"createTemplate\":\"Generate Template\", \"enableMaintenance\":\"Enable Maintenance Mode\", \"disableMaintenance\":\"Disable Maintenance Mode\", \"enableCPUManager\":\"Enable CPU Manager\", \"disableCPUManager\":\"Disable CPU Manager\", \"cordon\":\"Cordon\", \"uncordon\":\"Uncordon\", \"addHotplugVolume\":\"Add Volume\", \"addHotplugNic\":\"Hotplug Network Interface\", \"exportImage\":\"Export Image\", \"viewlogs\":\"View Logs\", \"cancelExpand\":\"Cancel Expand\", \"snapshot\":\"Take Snapshot\", \"pvcClone\":\"Clone Volume\", \"vmSnapshot\":\"Take Virtual Machine Snapshot\", \"shutdown\":\"Shut Down\", \"powerOn\":\"Power On\", \"reboot\":\"Reboot\", \"reconnect\":\"Reconnect\", \"forceStop\":\"Force Stop\"}), \"formatters\":({\"hardwareResourceGauge\":({\"allocated\":\"Allocated\", \"consumption\":\"{useful} of {total} {units} {suffix}\", \"cores\":\"CPU\", \"pods\":\"Pods\", \"ram\":\"Memory\", \"used\":\"Used\", \"reserved\":\"Reserved\", \"units\":({\"cores\":\"{count, plural,\\n=1 {core}\\nother {cores}}\"})}), \"harvesterIpAddress\":({\"customIpTooltip\":\"Custom IP (set via annotation)\"})}), \"tableHeaders\":({\"hostNetworkConfig\":({\"underlay\":\"Underlay\", \"underlayTooltip\":\"Allow this interface to act as the underlay for VM overlay networks.\", \"vlanID\":\"VLAN ID\", \"mode\":\"Mode\", \"clusterNetwork\":\"Cluster Network\"}), \"imageEncryption\":\"Encryption\", \"size\":\"Size\", \"virtualSize\":\"Virtual Size\", \"progress\":\"Progress\", \"message\":\"Message\", \"phase\":\"Phase\", \"attachedVM\":\"Attached Virtual Machine\", \"cpuManager\":\"CPU Manager\", \"routeConnectivityTooltip\":\"Connectivity between the VM network and the management network, which the Harvester nodes are connected to.\", \"fingerprint\":\"Fingerprint\", \"value\":\"Value\", \"actions\":\"Actions\", \"readyToUse\":\"Ready To Use\", \"backupTarget\":\"Backup Target\", \"targetVm\":\"Target Virtual Machine\", \"cronExpression\":\"Cron Expression\", \"retain\":\"Retain\", \"scheduleType\":\"Type\", \"configuredProfiles\":\"Configured Profiles\", \"maxFailure\":\"Max Failure\", \"sourceVm\":\"Source Virtual Machine\", \"vmSchedule\":\"Virtual Machine Schedule\", \"hostIp\":\"Host IP\", \"vm\":({\"ipAddress\":\"IP Address\", \"node\":\"Node\", \"defaultVersion\":\"Default Version\"}), \"network\":({\"type\":\"Type\", \"vlan\":\"VLAN ID\"}), \"snapshotTargetVolume\":\"Original Volume\", \"volumeSnapshotCounts\":\"Snapshot Counts\", \"networkState\":\"Network State\", \"totalSnapshotQuota\":\"Total Snapshot Quota\", \"storageClass\":\"Storage Class\", \"restore\":\"Restore\", \"vmImportSourceVm\":\"Source VM\", \"vmImportSourceCluster\":\"Source Cluster\", \"vmImportStatus\":\"Import Status\", \"vmImportSourceVDatacenter\":\"Datacenter\", \"vmImportSourceVEndpoint\":\"Endpoint\", \"vmImportSourceVClusterStatus\":\"Cluster Status\", \"vmImportSourceORegion\":\"Region\", \"vmImportSourceOEndpoint\":\"Endpoint\", \"vmImportSourceOClusterStatus\":\"Cluster Status\", \"vmImportSourceOVAUrl\":\"URL\", \"vmImportSourceOVAStatus\":\"Status\", \"v4ip\":\"V4 IP\", \"v6ip\":\"V6 IP\", \"eipName\":\"EIP Name\", \"vmMigrationProviderType\":\"Type\", \"vmMigrationProviderUrl\":\"URL\", \"vmMigrationMapSourceProvider\":\"Source Provider\", \"vmMigrationMapDestProvider\":\"Destination Provider\", \"vmMigrationPlanTargetNs\":\"Target Namespace\", \"vmMigrationPlanVmCount\":\"VM Count\", \"vmMigrationMigrationPlan\":\"Plan\"}), \"tab\":({\"volume\":\"Volumes\", \"network\":\"Networks\", \"advanced\":\"Advanced Options\", \"accessCredentials\":\"Access Credentials\", \"pciDevices\":\"PCI Devices\", \"vGpuDevices\":\"vGPU Devices\", \"usbDevices\":\"USB Devices\", \"vmScheduling\":\"Virtual Machine Scheduling\", \"quotas\":\"Quotas\", \"snapshots\":\"Snapshots\", \"instanceLabel\":\"Instance Labels\", \"annotations\":\"Annotations\", \"filesystem\":\"Filesystem Volume\"}), \"fields\":({\"version\":\"Version\", \"name\":\"Name\", \"type\":\"Type\", \"image\":\"Image\", \"size\":\"Size\", \"volume\":\"Volume\", \"network\":\"Network\", \"model\":\"Model\", \"macAddress\":\"MAC address\", \"staticIp\":\"Static IP\", \"port\":\"Port\", \"protocol\":\"Protocol\", \"remove\":\"Remove\", \"PhysicalNic\":\"Physical NIC\", \"cpu\":\"CPU\", \"memory\":\"Memory\", \"virtualName\":\"Virtual machine name\", \"promiscuous\":\"Promiscuous\", \"ipv4Address\":\"IPv4 address\", \"filterLabels\":\"Filter labels\", \"filterSchedule\":\"Filter schedule\", \"storageClass\":\"Storage class\", \"dockerImage\":\"Docker image\"}), \"pci\":({\"available\":\"Available Devices\", \"compatibleNodes\":\"Compatible Nodes\", \"impossibleSelection\":\"There are no hosts with all of the selected devices.\", \"howToUseDeviceInVMCreation\":({\"prefix\":\"Use the table below to enable PCI passthrough on each device you want to use in this virtual machine. For vGPU devices, please enable them on the\", \"middle\":\"vGPU Devices\", \"suffix\":\"page first.\"}), \"howToUseDevice\":({\"prefix\":\"Select the device in the table to enable PCI passthrough. For vGPU devices, please enable them on the\", \"middle\":\"vGPU Devices\", \"suffix\":\"page.\"}), \"deviceInTheSameHost\":\"You can only select devices on the same host.\", \"showCompatibility\":\"Show device compatibility matrix\", \"hideCompatibility\":\"Hide device compatibility matrix\", \"claimError\":\"Error enabling passthrough on {name}\", \"unclaimError\":\"Error disabling passthrough on {name}\", \"cantUnclaim\":\"You cannot disable passthrough on a device claimed by another user.\", \"detachWarning\":({\"title\":\"Cannot Disable Passthrough\", \"message\":\"Please detach the device from the VM and save it first before disabling passthrough.\"}), \"enableGroup\":\"Enable Group\", \"disableGroup\":\"Disable Group\", \"labelRequired\":\"This rule should not be manually altered: it ensures that the PCI devices selected for this virtual machine are available on the virtual machine's host.\", \"goSetting\":({\"prefix\":\"The pcidevices-controller add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable the add-on to successfully manage your PCI devices.\"}), \"noPCIPermission\":\"Please contact your system administrator to enable the PCI devices first.\", \"enablePassthroughWarning\":\"Please be careful not to use host-owned PCI devices (e.g., management and VLAN NICs). Incorrect device allocation may cause damage to your cluster, including node failure.\", \"disableResourcePooling\":\"Disable Resource Pooling\", \"disableResourcePoolingDescription\":\"Assigns this device a unique resource name so it can be pinned to a specific VM, instead of sharing the pool with other identical devices.\"}), \"devices\":({\"matrixHostName\":\"Host Name\", \"matrixDeviceClaimName\":\"Device Claim Name\"}), \"generic\":({\"close\":\"Close\", \"open\":\"Open\", \"showMore\":\"Show More\", \"hideMore\":\"Hide More\", \"memory\":\"Memory\", \"cpu\":\"CPU\", \"storage\":\"Storage\", \"noFileChosen\":\"No file chosen\", \"noSchema\":\"Can not find the custom resource definition: {schema}.\"}), \"validation\":({\"custom\":({\"tooLongName\":\"\\\"Name\\\" cannot be more than {max} characters.\"}), \"generic\":({\"hasDelete\":\"{type} \\\"{name}\\\" has been deleted.\", \"maxLength\":\"\\\"{key}\\\" cannot be more than {max} characters\", \"tabError\":\"{prefix}: {message}\", \"maximumSize\":\"Exceed maximum size {max}!\", \"regex\":\"Invalid {lowerType} \\\"{name}\\\": {upperType} must match the regex \\\"{regex}\\\"\"}), \"vm\":({\"name\":\"name is required!\", \"memory\":\"\\\"Memory\\\" is required!\", \"duplicatedName\":\"duplicate {type} name: \\\"{name}\\\"\", \"network\":({\"macFormat\":\"Invalid MAC address format.\", \"upperType\":\"Network name\", \"lowerType\":\"network name\"}), \"volume\":({\"upperType\":\"Volume name\", \"lowerType\":\"volume name\", \"needAtLeastOneBootable\":\"At least one bootable volume is required!\"})}), \"image\":({\"ruleTip\":\"The URL you have entered ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw.\", \"ruleFileTip\":\"The file you have chosen ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw.\"}), \"hash\":({\"sha512\":\"Invalid SHA512 checksum.\"}), \"subnet\":({\"excludeIps\":\"Exclude IPs cannot be empty. Please remove or fill in the exclude IPs.\", \"aclEmptyError\":\"The fields in subnet access control list rule can not be empty.\"})}), \"dashboard\":({\"label\":\"Dashboard\", \"header\":\"Harvester Cluster: {cluster}\", \"hardwareResourceGauge\":({\"cpu\":\"CPU\", \"memory\":\"Memory\", \"storage\":\"Storage\", \"allocated\":\"Allocated\"}), \"sections\":({\"events\":({\"label\":\"Events\"}), \"vmMetrics\":({\"label\":\"Virtual Machine Metrics\"})}), \"version\":\"Version\"}), \"host\":({\"console\":\"Console\", \"label\":\"Hosts\", \"inconsistentIP\":\"Host IP is inconsistent, current IP: { currentIP }, initial IP: { initIP }\", \"noConsoleUrl\":\"Console URL not specified\", \"promote\":({\"none\":\" \", \"running\":\"Promoting\", \"failed\":\"Promote failed\", \"unknown\":\"Promote halted\", \"promoteRestart\":\"Restarting\", \"promoteSucceed\":\"Promote completed\"}), \"tabs\":({\"network\":\"Network\", \"overview\":\"Overview\", \"basics\":\"Basics\", \"instance\":\"Virtual Machines\", \"monitor\":\"Monitor Data\", \"storage\":\"Storage\", \"labels\":\"Labels\", \"ksmtuned\":\"Ksmtuned\", \"hugepages\":\"Hugepages\", \"seeder\":\"Out-of-band Access\"}), \"detail\":({\"kvm\":({\"disableMessage\":\"Hardware-based virtualization is disabled or not supported. Hardware-based virtualization must be enabled before creating any virtual machines.\"}), \"title\":({\"network\":\"Network Configuration\"}), \"hostIP\":\"Host IP\", \"role\":\"Role\", \"os\":\"Operating System\", \"create\":\"Creation Time\", \"update\":\"Last Update Time\", \"customName\":\"Custom Name\", \"consoleUrl\":\"Console URL\", \"more\":\"More Information\", \"uuid\":\"UUID\", \"containerRuntime\":\"Container Runtime\", \"kernel\":\"Kernel\", \"management\":\"Management Node\", \"compute\":\"Compute Node\", \"storage\":\"Storage\", \"nic\":\"Physical NIC\", \"notRecommended\":\"Not recommended\", \"networkType\":\"Type\", \"manufacturer\":\"Manufacturer\", \"serialNumber\":\"Serial Number\", \"model\":\"Model\", \"etcd\":\"Witness Node\", \"cpuManager\":\"CPU Manager\"}), \"enableMaintenance\":({\"title\":\"Enable Maintenance Mode\", \"protip\":\"The operation will migrate all virtual machines on this node to other nodes.\", \"shutDownVMs\":\"Check Force option to shutdown virtual machines which cannot be migrated in live mode.\", \"force\":\"Force\"}), \"cordon\":({\"title\":\"Cordon\", \"protip\":\"This operation will mark the node { node } as unschedulable.\"}), \"ksmtuned\":({\"run\":\"Run Strategy\", \"configure\":\"Configure\", \"mode\":\"Mode\", \"modeLink\":\"Mode \", \"thresCoef\":\"Threshold Coefficient\", \"enableMergeNodes\":\"Enable merging across nodes\", \"enable\":\"Enable\", \"disable\":\"Disable\", \"ksmStatus\":\"KSM Status\", \"modeOption\":({\"standard\":\"Standard\", \"high\":\"High-performance\", \"customized\":\"Customized\"}), \"parameters\":({\"title\":\"Ksmtuned Parameters\", \"boost\":\"Boost\", \"decay\":\"Decay\", \"sleepMsec\":\"Sleep Time (Millisecond)\", \"minPages\":\"Minimum Pages\", \"maxPages\":\"Maximum Pages\", \"description\":({\"boost\":\"The number of scanned pages is incremented each time if the available memory is less than the threshold coefficient.\", \"decay\":\"The number of scanned pages is decremented each time if the available memory is greater than the threshold coefficient.\", \"sleepMsec\":\"The interval between two scans (the minimum value is 10ms), which is calculated by the formula (Sleep Milliseconds * 16 * 1024 * 1024/Total Memory).\", \"minPages\":\"The minimum number of pages per scan, also the configuration for the first run.\", \"maxPages\":\"Maximum number of pages per scan.\"})}), \"statistics\":({\"title\":\"Statistics \", \"sharing\":\"Sharing\", \"shared\":\"Shared\", \"unshared\":\"Unshared\", \"volatile\":\"Volatile\", \"fullScans\":\"Full Scans\", \"stableNodeChains\":\"Stable Node Chains\", \"stableNodeDups\":\"Stable Node Dups\"})}), \"hugepages\":({\"meminfo\":\"Meminfo\", \"transparent\":({\"title\":\"Transparent Hugepages \", \"enabled\":\"Enabled\", \"shmemEnabled\":\"Shared Memory Enabled\", \"defrag\":\"Defragmentation\"}), \"status\":({\"anon\":\"Anonymous Hugepages (bytes)\", \"size\":\"Default Hugepage Size (bytes)\", \"total\":\"Total Hugepages\", \"free\":\"Free Hugepages\", \"rsvd\":\"Reserved Hugepages\", \"surp\":\"Surplus Hugepages\"})}), \"disk\":({\"add\":\"Add Disk\", \"path\":({\"label\":\"Path\"}), \"storageReserved\":({\"label\":\"Storage Reserved\"}), \"allowScheduling\":({\"label\":\"Scheduling\", \"tooltip\":\"Disk {name} ({path}) scheduling is disabled\"}), \"evictionRequested\":({\"label\":\"Eviction Requested\"}), \"forceFormatted\":({\"label\":\"Force Formatted\", \"toolTip\":\"Force formatted will clean up disk data, make sure you backup all available data to prevent data loss.\", \"yes\":\"Yes (Ext4 File System)\"}), \"description\":({\"label\":\"Description\"}), \"lastFormattedAt\":({\"info\":\"The disk has already been force-formatted.\"}), \"notification\":({\"success\":\"Update host \\\"{name}\\\" storage configurations successfully.\"}), \"error\":\"Host has unready or unschedulable disks.\", \"mounted\":\"Already Mounted\", \"fileSystem\":({\"info\":\"Current file system is {system}, You can format it manually.\", \"formatting\":\"Disk is formatting, please wait.\"}), \"tags\":({\"label\":\"Disk Tags\", \"addLabel\":\"Add Disk Tag\"}), \"conditions\":\"Conditions\", \"storageAvailable\":({\"label\":\"Storage Available\"}), \"storageScheduled\":({\"label\":\"Storage Scheduled\"}), \"storageMaximum\":({\"label\":\"Storage Maximum\"}), \"provisioner\":\"Provisioner\", \"lvmVolumeGroup\":({\"label\":\"Volume Group\", \"create\":\"Create New...\"}), \"storage\":({\"longhorn\":({\"LonghornV1\":({\"label\":\"Longhorn V1 (CSI)\"}), \"LonghornV2\":({\"label\":\"Longhorn V2 (CSI)\"})}), \"lvm\":({\"label\":\"LVM\"})})}), \"tags\":({\"label\":\"Host Tags\", \"addLabel\":\"Add Host Tag\"}), \"powerAction\":({\"message\":({\"success\":\"Perform host { name } { operation } successfully.\"})}), \"ntp\":({\"label\":\"NTP Server Addresses\", \"tips\":\"You can configure multiple IPv4 addresses or host addresses.\", \"placeholder\":\"e.g. IPv4\", \"ntpSyncStatus\":({\"isDisabled\":\"NTP is disabled. Please check the NTP service is active.\", \"isUnsynced\":\"NTP is not synchronized with the NTP server {current}.\"})})}), \"virtualMachine\":({\"label\":\"Virtual Machines\", \"osType\":\"OS Type\", \"cpuModel\":({\"label\":\"CPU Model\", \"fetchError\":\"Failed to load CPU model configuration: {error}\", \"optionLabel\":\"{modelName} ({count} {count, plural, one {node} other {nodes}})\"}), \"hotplug\":({\"title\":\"Enable CPU and memory hotplug\", \"tooltip\":\"The default maximum CPU and maximum memory are {hotPlugTimes} times based on CPU and memory.\", \"restartVMMessage\":\"Restart action is required for the virtual machine configuration change to take effect\"}), \"hotUnplug\":({\"actionLabel\":\"Detach\", \"detachVolume\":({\"title\":\"Are you sure that you want to detach volume {name}?\", \"actionLabel\":\"Detach Volume\", \"success\":\"Volume { name } is detached successfully.\"}), \"ejectCdRomVolume\":({\"title\":\"Are you sure that you want to eject image from device {name}?\", \"actionLabel\":\"Eject Image\", \"success\":\"Image from device { name } is ejected successfully.\"}), \"detachNIC\":({\"title\":\"Are you sure that you want to detach network interface {name}?\", \"actionLabel\":\"Detach Network Interface\", \"success\":\"The settings have been saved, but the network interface {name} will be detached only after the virtual machine is migrated.\"})}), \"instance\":({\"singleInstance\":null, \"multipleInstance\":null, \"single\":({\"label\":\"Single Instance\", \"nameLabel\":\"Name\", \"host\":({\"label\":\"Hostname\", \"placeholder\":\"Default to the virtual machine name.\"})}), \"multiple\":({\"label\":\"Multiple Instance\", \"nameNsDescription\":\"Name prefix for each instance\", \"count\":\"Count\", \"countTip\":\"Count should be between 1 and 10\", \"nameLabel\":\"Name Prefix\", \"host\":({\"label\":\"Host Prefix Name\", \"placeholder\":\"Default to the virtual machine name.\"})})}), \"useTemplate\":({\"label\":\"Use the virtual machine template:\", \"template\":({\"label\":\"Template\"}), \"version\":({\"label\":\"Version\"})}), \"console\":({\"novnc\":\"Open in WebVNC\", \"serial\":\"Open in Serial Console\"}), \"promptRemove\":({\"title\":\"Select the volume you want to delete:\", \"deleteAll\":\"Delete All\", \"tips\":\"Warn: The snapshots of the virtual machine will be deleted with virtual machine and the snapshots of volume will be deleted with volume.\"}), \"restartTip\":\"{restart, select,\\n true {Restart}\\n other {Start}\\n} the virtual machine now to take effect of the configuration changes.\", \"runStrategy\":\"Run Strategy\", \"maintenanceStrategy\":({\"label\":\"Maintenance Strategy\", \"options\":({\"Migrate\":\"Migrate\", \"ShutdownAndRestartAfterEnable\":\"Shutdown and Restart After Enable\", \"ShutdownAndRestartAfterDisable\":\"Shutdown and Restart After Disable\", \"Shutdown\":\"Shutdown\"})}), \"cpuPinning\":({\"label\":\"Enable CPU Pinning\", \"tooltip\":\"Enable CPU Pinning brings better performance and reduce latency for the virtual machine\", \"restartVMMessage\":\"Changing the CPU Pinning setting requires a virtual machine reboot for the change to take effect\", \"migrationMessage\":\"This virtual machine can only be migrated to a target node that has CPU Manager enabled, as CPU Pinning is configured.\"}), \"restartNow\":\"{restart, select,\\n true {Restart}\\n other {Start}\\n} Now\", \"createSSHKey\":\"Create a New...\", \"genericLoginError\":\"Authentication failed. Please re-log in and try again.\", \"installAgent\":\"Install guest agent\", \"enableUsb\":\"Enable USB Tablet\", \"advancedOptions\":({\"tpm\":\"Enable TPM\", \"tpmPersistentState\":\"TPM Persistent State\", \"cpuManager\":({\"prefix\":\"You must enable CPU Manager for at least one node in\", \"middle\":\"host page\", \"suffix\":\"to enable CPU Pinning for VM\"}), \"efiEnabled\":\"Booting in EFI mode\", \"efiPersistentState\":\"EFI Persistent State\", \"secureBoot\":\"Secure Boot\"}), \"usbTip\":\"Provides an absolute pointer device which often helps with getting a consistent mouse cursor position in VNC.\", \"sshTitle\":\"Add Public SSH Key\", \"imageTip\":\"An external URL to the .iso, .img, .qcow2 or .raw that the virtual machine should be created from.\", \"volume\":({\"dragTip\":\"Drag and drop volumes, or use the volume's arrows, to change the boot order.\", \"volumeTip\":\"The virtual machine only contains a CD-ROM volume. You may want to add additional disk volumes.\", \"macTip\":\"MAC address as seen inside the guest system.\", \"staticIpTip\":\"Static IP that will be stored to annotation static-ip.harvesterhci.io/{nic_name}.\", \"volumeUpdate\":\"Set volume { name } successfully\", \"type\":\"Type\", \"size\":\"Size\", \"edit\":\"Edit\", \"bus\":\"Bus\", \"readyToUse\":\"Ready To Use\", \"bootOrder\":\"Boot Order\", \"volume\":\"Volume\", \"dockerImage\":\"Docker Image\", \"addVolume\":\"Add Volume\", \"addExistingVolume\":\"Add Existing Volume\", \"addVmImage\":\"Add a Virtual Machine Image\", \"addContainer\":\"Add Container\", \"setFirst\":\"Set as root volume\", \"saveVolume\":\"Update Volume\", \"encryption\":\"Encryption\", \"vmImageVolumeTip\":\"Disk size ({diskSize}) should greater than selected image virtual size ({imageVirtualSize})\", \"lockTooltip\":({\"all\":\"All volumes are encrypted.\", \"partial\":\"Some volumes are encrypted.\"}), \"title\":({\"vmImage\":\"Image Volume\", \"existingVolume\":\"Existing Volume\", \"volume\":\"Volume\", \"container\":\"Container\"}), \"unmount\":({\"title\":\"Are you sure?\", \"message\":\"Are you sure you want to unmount this volume?\"}), \"emptyImage\":\"No media\"}), \"network\":({\"title\":\"Network\", \"addNetwork\":\"Add Network\", \"addPort\":\"Add Port\"}), \"cloudConfig\":({\"title\":\"Cloud Configuration\", \"createTemplateTitle\":\"Create {name}\", \"createNew\":\"Create new...\", \"cloudInit\":({\"label\":\"Cloud Init\", \"placeholder\":\"Select a template\"}), \"user\":({\"label\":\"User Data Template\", \"title\":\"User Data:\", \"tip\":\"You can specify user data to configure an instance or run a configuration script during launch. If you launch more than one instance at a time, the user data is available to all the instances in that reservation. Learn more \"}), \"network\":({\"label\":\"Network Data Template\", \"title\":\"Network Data:\", \"tip\":\"The network-data configuration allows you to customize the instance's networking interfaces by assigning subnet configuration, virtual device creation (bonds, bridges, VLANs) routes and DNS configuration. Learn more \"})}), \"sysprep\":({\"title\":\"Windows Sysprep Configuration\", \"description\":\"Configure Windows automated installation using autounattend.xml. The configuration will be stored in a Kubernetes Secret and mounted as a CD-ROM during installation. Learn more \", \"createNew\":\"Create new...\", \"createNewTitle\":\"Create Windows Sysprep Template\", \"xmlContent\":\"autounattend.xml content\", \"secret\":({\"label\":\"Windows Sysprep Template\"}), \"validation\":({\"invalidXml\":\"Invalid XML syntax\", \"invalidNamespace\":\"Invalid unattend.xml namespace. Expected 'urn:schemas-microsoft-com:unattend'\"})}), \"scheduling\":({\"affinity\":({\"anyNode\":\"Run virtual machine on any available node\", \"schedulingRules\":\"Run virtual machine on node(s) matching scheduling rules\", \"specificNode\":\"Run virtual machine on specific node - (Live migration is not supported)\"}), \"networkNotSupport\":\"Network not support schedule\"}), \"accessCredentials\":({\"resetPwd\":({\"label\":\"Add Basic Auth\"}), \"injectSSH\":({\"label\":\"Add SSH Key\", \"users\":\"Select Users\", \"addUser\":\"Add User\"}), \"tips\":\"qemu-guest-agent must be installed to enable the accessing of credentials. The virtual machine needs to be restarted after credentials added. You need to be in the virtual machine to edit your password or remove an SSH-Key after deleting the credentials.\", \"userTips\":\"The user to be added must already exist; otherwise, the credentials will not take effect.\", \"duplicatedUser\":\"User already exists.\", \"invalidUser\":\"Invalid Username.\"}), \"input\":({\"name\":\"Name\", \"cpu\":\"CPU\", \"maxCpu\":\"Maximum CPU\", \"maxMemory\":\"Maximum Memory\", \"memory\":\"Memory\", \"image\":\"Image\", \"sshKey\":\"SSHKey\", \"sshKeyValue\":\"SSH-Key\", \"MachineType\":\"Machine Type\", \"username\":\"Username\", \"password\":\"Password\", \"reservedMemory\":\"Reserved Memory\", \"customizeDisplayName\":\"Customize virtual machine display name\", \"displayNamePlaceholder\":\"Virtual machine alias name\", \"displayName\":\"Display Name\"}), \"filesystem\":({\"description\":\"Harvester supports filesystem volumes for VM via virtiofs.\", \"type\":\"Filesystem Type\", \"volume\":\"Volume\", \"resource\":\"Resource\", \"add\":\"Add\", \"mountBannerHint\":\"Please update the mount path (e.g. /mnt/appconfigfs) to your preferred location, then add the corresponding commands to the\", \"mountBannerHintLink\":\"runcmd\", \"mountBannerHintSuffix\":\"in Advanced tab User Data.\"}), \"machineTypeTip\":\"Specify a processor architecture to emulate. To see a list of supported architectures, run: qemu-system-x86_64 -cpu ?\", \"detail\":({\"tabs\":({\"overview\":\"Overview\", \"details\":\"Details\", \"environment\":\"Environment\", \"events\":\"Events\", \"migration\":\"Migration\", \"console\":\"Console\", \"networkInterfaces\":\"Network Interfaces\", \"disks\":\"Disks\", \"networks\":\"Networks\", \"basics\":\"Basics\", \"configurations\":\"Configurations\", \"inventory\":\"Inventory\", \"hostBasic\":\"Basic Attributes\", \"instance\":\"Virtual Machines\", \"monitor\":\"Monitor Data\", \"keypairs\":\"SSH Keys\", \"cloudConfig\":\"Cloud Configuration\", \"metrics\":\"Virtual Machine Metrics\"}), \"details\":({\"title\":({\"vmDetails\":\"Virtual Machine Details\", \"requirements\":\"Scheduling and resources requirements\", \"services\":\"Services\", \"users\":\"Logged in users\"}), \"name\":\"Name\", \"totalSnapshotQuota\":\"Total Snapshot Quota\", \"namespace\":\"Namespace\", \"created\":\"Created\", \"hostname\":\"Hostname\", \"node\":\"Node\", \"ipAddress\":\"IP Address\", \"status\":\"Status\", \"pod\":\"Pod\", \"labels\":\"Labels\", \"bootOrder\":\"Boot Order\", \"annotations\":\"Annotations\", \"CDROMs\":\"CD-ROMs\", \"description\":\"Description\", \"operatingSystem\":\"Operating System\", \"template\":\"Template\", \"kernelRelease\":\"Kernel Release\", \"owner\":\"Owner\", \"workloadProfile\":\"Workload Profile\", \"nodeSelector\":\"Node Selector\", \"flavor\":\"Flavor\", \"tolerations\":\"Tolerations\", \"dedicatedResources\":\"Dedicated Resources\", \"down\":\"Virtual machine not running\", \"affinityRules\":\"Affinity Rules\", \"phase\":\"Phase\", \"sourceNode\":\"Source Node\", \"targetNode\":\"Target Node\", \"started\":\"Started\", \"ended\":\"Ended\"}), \"notAvailable\":\"Not available\", \"GuestAgentNotInstalled\":\"Guest agent required\", \"noOwner\":\"No Owner\", \"events\":({\"from\":\"Generated from\", \"down\":\"No events in the past hour\"}), \"console\":({\"down\":\"This virtual machine is down. Please start it to access its console.\", \"shortcutKeys\":\"Shortcut Keys\", \"customShortcutKeys\":\"Custom Shortcut Keys\", \"management\":\"Management Shortcut Keys\", \"record\":({\"start\":\"Record\", \"recording\":\"Recording\", \"stop\":\"Stop Recording\", \"tips\":\"Press the record button to capture your keyboard inputs.\", \"send\":\"Send\", \"preferredKeys\":\"Preferred Custom Shortcut Keys\"})})}), \"terminationGracePeriodSeconds\":({\"label\":\"Termination Grace Period\"}), \"affinity\":({\"addLabel\":\"Add Workload Selector\", \"topologyKey\":({\"placeholder\":\"topology.kubernetes.io/zone\"}), \"thisPodNamespace\":\"This virtual machine's namespace\", \"matchExpressions\":({\"inNamespaces\":\"Workloads in these namespaces\"}), \"namespaces\":({\"label\":\"Namespaces\"})}), \"instanceLabels\":({\"banner\":\"These labels are automatically synchronized to the virtual machine instance.\"}), \"labels\":({\"banner\":\"These key values are added as labels to the virtual machine.\"}), \"annotations\":({\"banner\":\"These key values are added as annotations to the virtual machine.\"})}), \"volume\":({\"label\":\"Volumes\", \"tabs\":({\"basics\":\"Basics\", \"snapshots\":\"Snapshots\", \"datasource\":\"Data Source\", \"details\":\"Details\", \"conditions\":\"Conditions\"}), \"size\":\"Size\", \"volumeMode\":\"Volume Mode\", \"accessModes\":\"Access Modes\", \"createWithDataVolume\":\"Create with DataVolume\", \"createWithDataVolumeTooltip\":\"Create Volume with Kubevirt/Containerized Data Importer way. It can fill accessMode/volumeMode automatically.\", \"showAdvanced\":\"Show Advanced Options\", \"hideAdvanced\":\"Hide Advanced Options\", \"source\":\"Source\", \"kind\":\"Kind\", \"sourceOptions\":({\"new\":\"New\", \"vmImage\":\"Virtual Machine Image\"}), \"image\":\"Image\", \"frontend\":\"Frontend\", \"blockdev\":\"Block Device\", \"attachedNode\":\"Attached Node\", \"endpoint\":\"Endpoint\", \"diskTags\":\"Disk Tags\", \"nodeTags\":\"Node Tags\", \"lastBackup\":\"Last Backup\", \"lastBackupAt\":\"Last Backup At\", \"replicasNumber\":\"Replicas Number\", \"promptRemove\":({\"tips\":\"Warn: The volume's snapshots will be deleted with this volume.\"}), \"externalLink\":({\"tips\":\"Check volume details\"}), \"rebuildingMessage\":\"Rebuilding: {percentage}%\", \"longhorn\":({\"disableResize\":\"Longhorn V2 volumes cannot be resized.\"})}), \"image\":({\"label\":\"Images\", \"tabs\":({\"basics\":\"Basics\"}), \"url\":\"URL\", \"size\":\"Size\", \"isEncryption\":\"Encryption\", \"encryptionSecret\":\"Encryption Secret\", \"virtualSize\":\"Virtual Size\", \"urlTip\":\"Supports the raw and qcow2 image formats which are supported by qemu . Bootable ISO images can also be used and are treated like raw images.\", \"fileName\":\"File Name\", \"uploadFile\":\"Upload File\", \"source\":\"Source Type\", \"sourceType\":({\"download\":\"URL\", \"upload\":\"File\", \"clone\":\"Clone\", \"encrypt\":\"Encrypt\", \"decrypt\":\"Decrypt\"}), \"sourceImage\":\"Source Image\", \"cryptoOperation\":\"Crypto Operation\", \"warning\":({\"uploading\":\"{count, plural,\\n=1 {1 image is uploading, please do not refresh or close the page.}\\nother {{count} images are uploading, please do not refresh or close the page.}\\n}\", \"osUpgrade\":({\"uploading\":\"{name} is uploading, please do not refresh or close the page.\"})}), \"checksum\":\"Checksum\", \"checksumTip\":\"Validate the image using the SHA512 checksum, if specified.\", \"tooltip\":({\"imported\":\"Created automatically by the vm-import-controller\"}), \"errors\":({\"unsupportedBackend\":\"Unsupported backend type: {backend}\"})}), \"vmTemplate\":({\"label\":\"Templates\", \"tabs\":({\"basics\":\"Basics\"}), \"nameNsDescription\":({\"name\":\"Template Name\"}), \"tips\":({\"notExistImage\":({\"title\":\"Image {name} does not exist!\", \"message\":\"Please select a new image.\"}), \"notExistNode\":({\"title\":\"Node {name} does not exist!\", \"message\":\"Please select a new node.\"})})}), \"upgradePage\":({\"upgradeApp\":\"Upgrade Software\", \"upgrade\":\"Upgrade\", \"upgradeTip\":\"Please select the version you want to upgrade to\", \"currentVersion\":\"CURRENT VERSION\", \"versionLabel\":\"AVAILABLE COMPATIBLE VERSIONS\", \"enableLogging\":\"Enable Logging\", \"skipSingleReplicaDetachedVol\":\"Skip checking single-replica detached volumes\", \"upgradeNode\":\"Upgrading Node\", \"upgradeSysService\":\"Upgrading System Service\", \"upgradeImage\":\"Download Upgrade Image\", \"osUpgrade\":\"Cluster Upgrade\", \"uploadNew\":\"Upload New Image\", \"deleteHeader\":\"Please select an image to delete.\", \"deleteExisting\":\"Delete Existing Image\", \"selectExisting\":\"Select Existing Image\", \"createRepository\":\"Creating Upgrade Repository\", \"succeeded\":\"Succeeded\", \"releaseTip\":\"Please read the upgrade documentation carefully. You can view details on the Harvester Release Notes .\", \"checkReady\":\"I have read and understood the upgrade instructions related to this Harvester version.\", \"pending\":\"Pending\", \"upload\":({\"duplicatedFile\":\"The file you are trying to upload already exists.\"}), \"repoInfo\":({\"upgradeStatus\":\"Upgrade Status\", \"os\":\"OS\", \"kubernetes\":\"Kubernetes\", \"monitoringChart\":\"Monitoring Chart\", \"harvesterChart\":\"Harvester Chart\", \"success\":\"Success\", \"fail\":\"Fail\", \"ongoing\":\"On-going\", \"downloadLog\":\"Download Log\", \"logStatus\":\"Log Download Status\"}), \"dismissMessage\":\"Dismiss it\", \"upgradeInfo\":({\"warning\":\"WARNING\", \"doc\":\"Read the documentation before starting the upgrade process. Ensure that you complete procedures that are relevant to your environment and the version you are upgrading to.\", \"tip\":\"Unmet system requirements and incorrectly performed procedures may cause complete upgrade failure and other issues that require manual workarounds.\", \"moreNotes\":\"For more details about the release notes, please visit -\"})}), \"schedule\":({\"label\":\"Virtual Machine Schedules\", \"createTitle\":\"Create Schedule\", \"createButtonText\":\"Create Schedule\", \"scheduleType\":\"Virtual Machine Schedule Type\", \"cron\":({\"label\":\"Cron Schedule\", \"editButton\":\"Edit\"}), \"detail\":({\"namespace\":\"Namespace\", \"sourceVM\":\"Source Virtual Machine\"}), \"tabs\":({\"basic\":\"Basic\", \"backups\":\"Backups\", \"snapshots\":\"Snapshots\"}), \"message\":({\"noSetting\":({\"suffix\":\"before creating a backup schedule\"})}), \"retain\":({\"label\":\"Retain\", \"count\":\"Count\", \"tooltip\":\"Number of up-to-date VM backups to retain. Maximum to 250, minimum to 2.\"}), \"maxFailure\":({\"label\":\"Max Failure\", \"count\":\"Count\", \"tooltip\":\"Max number of consecutive failed backups that could be tolerated. If reach this threshold, Harvester controller will suspend the schedule job. This value should less than retain count\"}), \"virtualMachine\":({\"title\":\"Virtual Machine Name\", \"placeholder\":\"Select a virtual machine\"}), \"type\":({\"snapshot\":\"Snapshot\", \"backup\":\"Backup\"})}), \"backup\":({\"label\":\"Virtual Machine Backups\", \"createText\":\"Restore Backup\", \"title\":\"Restore Virtual Machine\", \"refreshInterval\":({\"label\":\"Refresh Interval\", \"tip\":\"The interval for the backup target to sync data to harvester cluster. Set to 0 to disable refresh mechanism.\"}), \"backupTargetTip\":\"The endpoint used to access the backupstore. NFS and S3 are supported.\", \"message\":({\"noSetting\":({\"prefix\":\"You must configure the backup target\", \"middle\":\"setting\", \"suffix\":\"before creating a new backup.\"}), \"errorTip\":({\"prefix\":\"Backup target value in\", \"middle\":\"setting\", \"suffix\":\"is invalid, error: \"}), \"viewSetting\":({\"prefix\":\"Click\", \"middle\":\"here\", \"suffix\":\"to view the backup configuration.\"}), \"testConnect\":({\"actionLabel\":\"Test connection\", \"waitingLabel\":\"Testing connection...\", \"successLabel\":\"Connection tested\", \"successMessage\":\"Harvester can successfully connect to the endpoint {endpoint}\"})}), \"restore\":({\"backup\":\"Backup\", \"deletePreviousVolumes\":\"Delete Previous Volumes\", \"createNew\":\"Create new\", \"replaceExisting\":\"Replace existing\", \"virtualMachineName\":\"Virtual Machine Name\", \"keepMacAddress\":\"Keep MAC Address\", \"haltAfterRestore\":\"Keep powered off after restore\"}), \"matchTarget\":\"The current backup target does not match the existing one.\", \"progress\":({\"details\":\"Volume details\", \"tooltip\":({\"starting\":\"Backup initiating\", \"progress\":\"Backup in progress\", \"complete\":\"Backup completed\"})})}), \"restore\":({\"progress\":({\"details\":\"Volume details\", \"tooltip\":({\"starting\":\"Restore initiating\", \"progress\":\"Restore in progress\", \"complete\":\"Restore completed\"})})}), \"subnet\":({\"cidrBlock\":({\"tooltip\":\"The subnet range in CIDR notation. Note that the CIDR blocks of different Subnets' within the same VPC cannot overlap.\", \"label\":\"CIDR Block\", \"placeholder\":\"e.g. 172.20.0.0/16\"}), \"protocol\":({\"label\":\"Protocol\"}), \"provider\":({\"tooltip\":\"Network provider for this Subnet. Must be one of the Virtual Machine Networks in OverlayNetwork type.\", \"label\":\"Provider\"}), \"vpc\":({\"label\":\"Virtual Private Cloud\"}), \"gateway\":({\"label\":\"Gateway IP\", \"placeholder\":\"e.g. 172.20.0.1\"}), \"vlan\":({\"label\":\"VLAN\", \"placeholder\":\"Select a VLAN\"}), \"dhcp\":({\"label\":\"Dynamic Host Configuration Protocol (DHCP)\", \"v4Options\":\"DHCPV4Options\", \"v6Options\":\"DHCPV6Options\", \"placeholder\":\"key1=value1, key2=value2\", \"dhcpOptionBanner\":\"DHCP options is a key/value string concatenate with comma. For more detail, please refer to KubOVN document \", \"tooltip\":\"Enable DHCP server for this subnet. When enabled, VMs can automatically obtain IP addresses from this subnet.\"}), \"externalConnectivity\":({\"label\":\"NAT Outgoing\", \"tooltip\":\"Enable NAT for VMs using this subnet to access external networks.\"}), \"private\":({\"label\":\"Private Subnet\", \"tooltip\":\"Enable network isolation for this Subnet. When enabled, VMs can only communicate within this subnet, even if other subnets exist under the same VPC.\"}), \"allowSubnet\":({\"label\":\"Allow Subnets\", \"tooltip\":\"You can specify certain subnets which can communicate with this subnet.\", \"addSubnet\":\"Add Allow Subnet\", \"placeholder\":\"e.g. 172.16.0.0/16\"}), \"excludeIPs\":({\"tooltip\":\"The IP address list to reserve from automatic assignment. The gateway IP address is always excluded and will be automatically added to the list.\", \"placeholder\":\"single IP or 192.168.0.100..192.168.0.200\"}), \"acl\":({\"label\":\"Access Control List\", \"tooltip\":\"The ACL to apply to this Subnet. Must be one of the ACLs in the same namespace.\", \"action\":({\"label\":\"Action\", \"placeholder\":\"Please select an action\"}), \"direction\":({\"label\":\"Direction\", \"placeholder\":\"Please select a direction\"}), \"addRule\":\"Add Rule\", \"priority\":({\"label\":\"Priority\", \"placeholder\":\"Please select a priority\"}), \"match\":({\"label\":\"Match\", \"placeholder\":\"e.g. ip4.dst == 10.10.0.2\"}), \"banner\":\"The supported field in ACL match can refer to KubeOvn Subnet ACL document \"})}), \"vpc\":({\"viewTopology\":\"Topology\", \"topology\":({\"loading\":\"Loading topology...\", \"empty\":\"No resources found\", \"visibility\":({\"vpc\":\"VPC\", \"subnets\":\"Subnets\", \"overlayNetworks\":\"Overlay Networks\", \"vms\":\"VMs\"}), \"labels\":({\"cidr\":\"CIDR\", \"provider\":\"Provider\", \"type\":\"Type\", \"clusterNetwork\":\"Cluster Network\", \"network\":\"Network\", \"subnet\":\"Subnet\", \"ip\":\"IP\", \"mac\":\"MAC\", \"peering\":\"Peering\"})}), \"noAddonEnabled\":({\"prefix\":\"The kubeovn-operator add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable the add-on to successfully create VPC and subnet.\"}), \"label\":\"Virtual Private Cloud\", \"noChild\":\"There is no subnet defined in this Virtual Private Cloud.\", \"createSubnet\":\"Create Subnet\", \"staticRoutes\":({\"label\":\"Static Routes\", \"cidr\":({\"label\":\"CIDR\", \"placeholder\":\"e.g. 172.16.0.0/16\"}), \"nextHopIP\":({\"tooltip\":\"The localConnectIP on the other end of the peering VPC.\", \"label\":\"Next Hop IP\", \"placeholder\":\"e.g. 169.254.0.2\"})}), \"vpcPeerings\":({\"label\":\"VPC Peerings\", \"localConnectIP\":({\"tooltip\":\"The designated IP address in CIDR notation of the VPC peering endpoint. Note that both IP addresses (for the VPC and the other VPC) should belong to the same subnet range and should not conflict with the cidrBlock in any existing subnets.\", \"label\":\"Local Connect IP\", \"placeholder\":\"e.g. 169.254.0.1/16\"}), \"remoteVpc\":({\"label\":\"Remote VPC\"}), \"infoBanner\":\"The static route destination CIDR must cover all subnets CIDR from remote VPC Peer. Read VPC Peering Configuration Examples for more information.\"})}), \"natGateway\":({\"label\":\"Gateways\", \"internalTenantNetwork\":({\"label\":\"Internal Tenant Network\", \"placeholder\":\"Select a Virtual Machine Network\"}), \"vpc\":({\"label\":\"VPC\", \"placeholder\":\"Select a VPC\"}), \"subnet\":({\"label\":\"Subnet\", \"placeholder\":\"Select a subnet\"}), \"lanIp\":({\"label\":\"LAN IP\", \"placeholder\":\"Enter LAN IP\"}), \"externalSubnets\":({\"label\":\"External Subnets\", \"addLabel\":\"Add\", \"placeholder\":\"Select a subnet\"})}), \"externalIP\":({\"label\":\"External IPs\", \"natGateway\":({\"label\":\"VpcNatGateway\", \"placeholder\":\"Select a VpcNatGateway\"}), \"externalSubnet\":({\"label\":\"External Subnet\", \"placeholder\":\"Select an external subnet\"}), \"v4ip\":({\"label\":\"V4 IP\", \"placeholder\":\"public ip from external subnet\"})}), \"snat\":({\"label\":\"Source Rules\", \"eip\":({\"label\":\"EIP\", \"placeholder\":\"Select an external IP\"}), \"internalCIDR\":({\"label\":\"Internal CIDR\", \"placeholder\":\"internal subnet CIDR\"})}), \"dnat\":({\"label\":\"Destination Rules\", \"eip\":({\"label\":\"EIP\", \"placeholder\":\"Select an external IP\"}), \"externalPort\":({\"label\":\"External Port\", \"placeholder\":\"port number\"}), \"internalIp\":({\"label\":\"Internal IP\", \"placeholder\":\"internal IP address\"}), \"internalPort\":({\"label\":\"Internal Port\", \"placeholder\":\"port number\"}), \"protocol\":({\"label\":\"Protocol\", \"placeholder\":\"Select protocol (tcp or udp)\"})}), \"providerNetwork\":({\"label\":\"Provider Networks\", \"defaultInterface\":({\"label\":\"Default Interface\", \"placeholder\":\"Select the interface the same as master interface of external overlay network\"}), \"customInterfaces\":({\"label\":\"Custom Interfaces\", \"addLabel\":\"Add Custom Interface\", \"interface\":({\"label\":\"Network Interface\", \"placeholder\":\"e.g. eth2\"}), \"nodes\":({\"label\":\"Nodes\", \"addLabel\":\"Add Node\", \"placeholder\":\"Select a node\"})}), \"excludedNodes\":({\"label\":\"Excluded Nodes\", \"addLabel\":\"Add Excluded Node\", \"placeholder\":\"Select node to exclude from this provider network\"})}), \"vlanNetwork\":({\"label\":\"VLANs\"}), \"vlan\":({\"id\":({\"label\":\"VLAN ID\", \"placeholder\":\"e.g. 1-4094\"}), \"provider\":({\"label\":\"Provider Network\", \"placeholder\":\"Select a provider network\"})}), \"networkPolicy\":({\"label\":\"Policies\", \"banner\":\"The network policies must be used for VMs attached to overlay networks. Please read the harvester document how the network policy works.\"}), \"network\":({\"label\":\"Virtual Machine Networks\", \"tabs\":({\"basics\":\"Basics\", \"layer3Network\":\"Route\", \"nic\":\"Network Interface Card\"}), \"clusterNetwork\":({\"label\":\"Cluster Network\", \"create\":\"Create a new cluster network\", \"toolTip\":\"Define your custom cluster scope network name\", \"createPlaceholder\":\"Input a new cluster network name\", \"selectOrCreatePlaceholder\":\"Select or create a new cluster network\", \"selectPlaceholder\":\"Select a cluster network\"}), \"layer3Network\":({\"mode\":({\"label\":\"Mode\", \"auto\":\"Auto (DHCP)\", \"manual\":\"Manual\"}), \"serverIPAddr\":({\"label\":\"DHCP Server IP\"}), \"gateway\":({\"label\":\"Gateway\", \"placeholder\":\"e.g. 172.16.0.1\"}), \"cidr\":({\"label\":\"CIDR\", \"placeholder\":\"e.g. 172.16.0.1/24\"})})}), \"sshKey\":({\"label\":\"SSH Keys\", \"keypair\":\"SSH Key\", \"tabs\":({\"basics\":\"Basics\"})}), \"setting\":({\"label\":\"Settings\", \"tabs\":({\"advanced\":\"Advanced\", \"ui\":\"UI\"}), \"validation\":({\"physicalNIC\":\"DefaultPhysicalNIC\"}), \"placeholder\":({\"accessKeyId\":\"Specify your access key ID\", \"secretAccessKey\":\"Specify your secret access key\", \"cert\":\"Upload a self-signed SSL certificate\"}), \"noSearchMatch\":\"No settings match your search.\", \"vlanChangeTip\":\"The newly modified default network interface only applies to newly added nodes, not existing ones.\", \"defaultPhysicalNIC\":\"Default Network Interface\", \"modifiedMessage\":\"Settings that have been customized from default settings are tagged with 'Modified'.\", \"percentTip\":\"The value in parentheses represents the distribution percentage of the network interface on all hosts. If an interface less than 100% is selected, the user needs to manually specify the network interface on the host where the vlan network configuration fails.\", \"message\":({\"ca\":({\"prefix\":\"Click\", \"middle\":\"here\", \"suffix\":\"to add a custom certificate.\"})}), \"sslCertificates\":({\"publicCertificate\":\"Public Certificate\", \"privateKey\":\"Private Key\", \"ca\":\"CA\"}), \"rancherCluster\":({\"kubeConfig\":\"Rancher KubeConfig\", \"removeUpstreamClusterWhenNamespaceIsDeleted\":\"Remove Upstream Cluster When Namespace Is Deleted\"}), \"clusterPodSecurityStandard\":({\"whitelistedNamespaces\":({\"label\":\"Whitelisted Namespaces\"}), \"privilegedNamespaces\":({\"label\":\"Privileged Namespaces\"}), \"restrictedNamespaces\":({\"label\":\"Restricted Namespaces\"})}), \"storageNetwork\":({\"range\":({\"placeholder\":\"e.g. 172.16.0.0/24\", \"label\":\"IP Range\", \"invalid\":\"\\\"Range\\\" is invalid.\"}), \"clusterNetwork\":\"Cluster Network\", \"vlan\":\"VLAN ID\", \"exclusiveVlan\":\"Exclusive VLAN\", \"exclude\":({\"label\":\"Exclude IPs\", \"placeholder\":\"CIDR format, e.g. 172.16.0.10/32\", \"invalid\":\"\\\"Exclude list\\\" is invalid.\", \"addIp\":\"Add Exclude IP\"}), \"warning\":\"WARNING: Any change to storage-network requires shutting down all virtual machines before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.\", \"tip\":\"Specify an IP range in the IPv4 CIDR format. Number of IPs Required = Number of Nodes * 2 + Number of Disks * 2 + Number of Images to Download/Upload . For more information about storage network settings, see the documentation .\"}), \"rwxNetwork\":({\"warning\":\"WARNING: Any change to rwx-network requires longhorn RWX volumes detached before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.\", \"shareStorageNetwork\":\"Share Storage Network\", \"dedicatedRwxNetwork\":\"Dedicated RWX Network\", \"shareStorageNetworkWarning\":\"The rwx-network is governed by storage-network, and changes here won't take effect until share-storage-network is set to false.\"}), \"vmForceDeletionPolicy\":({\"period\":\"Period\", \"vmMigrationTimeout\":\"VM Migration Timeout\"}), \"vmMigrationNetwork\":({\"parseError\":\"Failed to parse existing configuration.\", \"fetchError\":\"Failed to load required network resources: {error}. Please refresh the page or try again later.\", \"clusterNetwork\":\"Cluster Network\", \"vlan\":\"VLAN ID\", \"range\":({\"placeholder\":\"e.g. 172.16.0.0/24\", \"label\":\"IP Range\", \"invalid\":\"\\\"Range\\\" is invalid.\"}), \"exclude\":({\"label\":\"Excluded IPs\", \"placeholder\":\"e.g. 172.16.0.1/32\", \"invalid\":\"\\\"Exclude list\\\" is invalid.\", \"addButton\":\"Add Exclude IP\"})}), \"ratio\":\"Ratio\", \"autoRotateRKE2Certs\":({\"expiringInHours\":\"Expiring in\"}), \"httpProxy\":({\"warning\":\"WARNING: If you configure \\\"http-proxy\\\" and \\\"https-proxy\\\", you must also put Harvester node's CIDR into \\\"no-proxy\\\", otherwise the Harvester cluster will be broken.\"}), \"supportBundleImage\":({\"imagePullPolicy\":\"Pull Policy\", \"repo\":\"Repository\", \"tag\":\"Tag\"}), \"csiDriverConfig\":({\"provisioner\":\"Provisioner\", \"volumeSnapshotClassName\":\"Volume Snapshot Class Name\", \"backupVolumeSnapshotClassName\":\"Backup Volume Snapshot Class Name\"}), \"csiOnlineExpandValidation\":({\"provisioner\":\"Provisioner\", \"value\":\"Value\", \"invalidJsonFormat\":\"Configuration value is not a valid JSON format: {error}\", \"failedToLoadDrivers\":\"Failed to load CSI drivers. Error: {error}\"}), \"containerdRegistry\":({\"mirrors\":({\"mirrors\":\"Mirrors\", \"registryName\":\"Registry Name\", \"endpoints\":\"Endpoints\", \"rewrite\":({\"rewrite\":\"Rewrite\", \"addRewrite\":\"Add Rewrite\"}), \"addMirror\":\"Add Mirror\"}), \"configs\":({\"configs\":\"Configurations\", \"registryEDQNorIP\":\"Registry FDQN or IP\", \"registryPlaceholder\":\"myregistry.local:5000\", \"username\":\"Username\", \"password\":\"Password\", \"auth\":\"Auth\", \"identityToken\":\"Identity Token\", \"insecureSkipVerify\":\"InsecureSkipVerify\", \"addConfig\":\"Add Configuration\"})}), \"upgrade\":({\"unknownImageName\":\"Image name is not found.\", \"imageUrl\":\"Please input a valid image URL.\", \"chooseFile\":\"Please select to upload an image.\", \"checksum\":\"Checksum\", \"networkError\":\"Unable to upload the image. Resolve network issues that may have occurred and try again.\", \"cancelUpload\":\"Cancelled the image upload.\", \"uploadSuccess\":\"{name} uploaded successfully. Press Upgrade button to start the cluster upgrade process.\", \"deleteImage\":\"Please select an image to delete.\", \"deleteSuccess\":\"{name} deleted successfully.\", \"imagePreloadStrategy\":\"Image Preload Strategy\", \"nodeUpgradeOption\":\"Node Upgrade Option\", \"restoreVM\":\"Restore VM\", \"strategy\":\"Strategy\", \"pauseNodes\":\"Pause Nodes\", \"strategyType\":\"Strategy Type\", \"concurrency\":\"Concurrency\"}), \"harvesterMonitoring\":({\"label\":\"Harvester Monitoring\", \"section\":({\"prometheus\":\"Prometheus\", \"prometheusNodeExporter\":\"Prometheus Node Exporter\", \"grafana\":\"Grafana\", \"alertmanager\":\"Alertmanager\"}), \"tips\":({\"scrape\":\"Interval between consecutive scrapes\", \"evaluation\":\"Interval between consecutive evaluations\", \"retention\":\"How long to retain metrics\", \"retentionSize\":\"Maximum size of metrics\"})}), \"clusterRegistrationUrl\":({\"url\":\"URL\", \"insecureSkipTLSVerify\":\"Insecure Skip TLS Verify\", \"tip\":({\"prefix\":\"Harvester secures cluster registration via TLS by default. If opt out \\\"Insecure Skip TLS Verify\\\", you must provide custom CA certificates using the\", \"middle\":\"additional-ca\", \"suffix\":\"setting.\"}), \"message\":\"To completely unset the imported Harvester cluster, please also remove it on the Rancher Dashboard UI via the Virtualization Management page.\"}), \"ntpServers\":({\"isNotIPV4\":\"The address you entered is not IPv4 or host. Please enter a valid IPv4 address or a host address.\", \"isDuplicate\":\"There are duplicate NTP server configurations.\"}), \"instanceManagerResources\":({\"parseError\":\"Failed to parse configuration: {error}\", \"v1\":\"V1 Data Engine\", \"v2\":\"V2 Data Engine\"}), \"kubevirtMigration\":({\"parseError\":\"Failed to parse configuration: {error}\", \"parallelMigrationsPerCluster\":\"Parallel Migrations Per Cluster\", \"parallelOutboundMigrationsPerNode\":\"Parallel Outbound Migrations Per Node\", \"bandwidthPerMigration\":\"Bandwidth Per Migration\", \"bandwidthPerMigrationTooltip\":\"0 is KubeVirt default, representing unlimited bandwidth\", \"completionTimeoutPerGiB\":\"Completion Timeout Per GiB\", \"progressTimeout\":\"Progress Timeout\", \"allowAutoConverge\":\"Allow Auto Converge\", \"allowPostCopy\":\"Allow Post Copy\", \"unsafeMigrationOverride\":\"Unsafe Migration Override\", \"allowWorkloadDisruption\":\"Allow Workload Disruption\", \"disableTLS\":\"Disable TLS\", \"matchSELinuxLevelOnMigration\":\"Match SELinux Level On Migration\"})}), \"cloudTemplate\":({\"label\":\"Cloud Configuration Templates\", \"templateType\":\"Template Type\", \"userData\":\"User Data\", \"networkData\":\"Network Data\"}), \"support\":({\"title\":\"Harvester Support\", \"kubeconfig\":({\"title\":\"Download KubeConfig\", \"titleDescription\":\"Download kubeconfig for debugging.\"}), \"internal\":({\"rancher\":({\"title\":\"Access Embedded Rancher UI\", \"titleDescription\":\"You can only use the embedded Rancher UI for debugging and validation purposes. For more information about how Harvester integrates with Rancher, see the documentation .\"}), \"longhorn\":({\"title\":\"Access Embedded Longhorn UI\", \"titleDescription\":\"We only support to use the embedded Longhorn UI for debugging and validation purpose.\"})}), \"community\":({\"learnMore\":\"Find out more about SUSE Harvester support\", \"pricing\":\"Contact us for pricing\"})}), \"namespace\":({\"label\":\"Namespaces\"}), \"projectNamespace\":({\"label\":\"Projects/Namespaces\"}), \"vip\":({\"namespace\":({\"label\":\"Namespace\"}), \"cidr\":({\"label\":\"CIDR/IP Range\", \"invalid\":\"\\\"CIDR/IP Range\\\" is invalid.\", \"toolTip\":\"We can apply multiple pools or ranges by separating them with commas. For example: 192.168.0.200/30,192.168.0.200/29 or 192.168.0.10-192.168.0.11\"}), \"add\":({\"label\":\"Add IP Pools\"})}), \"sslParameters\":({\"protocols\":({\"label\":\"Protocols\"}), \"ciphers\":({\"label\":\"Ciphers\"})}), \"monitoring\":({\"configuration\":({\"label\":\"Configuration\"}), \"alertmanagerConfig\":({\"label\":\"Alertmanager Configurations\", \"diabledMonitoringTips\":({\"prefix\":\"Enable the\", \"middle\":\"monitoring\", \"suffix\":\"add-on first.\"}), \"diabledAlertingTips\":({\"prefix\":\"Enable\", \"middle\":\"Alertmanager\", \"suffix\":\"for configuration to take effect.\"}), \"disabledAddon\":({\"prefix\":\"The monitoring add-on is disabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it.\"})})}), \"logging\":({\"configuration\":({\"section\":({\"fluentbit\":\"Fluentbit\", \"fluentd\":\"Fluentd\"})}), \"clusterFlow\":({\"label\":\"Cluster Flows\"}), \"clusterOutput\":({\"label\":\"Cluster Outputs\"}), \"flow\":({\"label\":\"Flows\"}), \"output\":({\"label\":\"Outputs\"}), \"diabledTips\":({\"prefix\":\"Enable\", \"middle\":\"logging\", \"suffix\":\"for configuration to take effect.\"})}), \"snapshot\":({\"totalSnapshotSize\":\"Total Snapshot Size\", \"label\":\"Volume Snapshots\", \"targetVolume\":\"Original Volume\", \"size\":\"Size\", \"image\":\"Image\"}), \"vmSnapshot\":({\"label\":\"Virtual Machine Snapshots\", \"createText\":\"Restore Snapshot\", \"title\":\"Restore Virtual Machine\", \"snapshot\":\"Snapshot\"}), \"storage\":({\"label\":\"Storage\", \"useDefault\":\"Use the default storage\", \"volumeEncryption\":\"Volume Encryption\", \"secret\":\"Secret\", \"volumeExpansionCheckbox\":\"Enable Expansion\", \"migratable\":({\"label\":\"Migratable\"}), \"numberOfReplicas\":({\"label\":\"Number Of Replicas\"}), \"staleReplicaTimeout\":({\"label\":\"Stale Replica Timeout\"}), \"nodeSelector\":({\"label\":\"Host Selector\"}), \"diskSelector\":({\"label\":\"Disk Selector\"}), \"storageClass\":({\"label\":\"Storage Class\", \"longhorn\":({\"v1\":({\"label\":\"Longhorn V1 (CSI)\"}), \"v2\":({\"label\":\"Longhorn V2 (CSI)\"}), \"versionTooltip\":\"Longhorn V2 is disabled for this node.\"}), \"lvm\":({\"label\":\"LVM\"})}), \"title\":\"Storage Classes\", \"customize\":({\"volumeBindingMode\":({\"later\":\"Bind and provision a persistent volume once a virtual machine using the PersistentVolumeClaim is created\"})}), \"parameters\":({\"numberOfReplicas\":({\"label\":\"Number Of Replicas\"}), \"staleReplicaTimeout\":({\"label\":\"Stale Replica Timeout\"}), \"diskSelector\":({\"label\":\"Disk Selector\", \"no-options\":\"No available tags, please add in the `Host > Storage` page\"}), \"nodeSelector\":({\"label\":\"Node Selector\", \"no-options\":\"No available tags, please add in the `Host > Storage` page\"}), \"migratable\":({\"label\":\"Migratable\"}), \"lvmVolumeGroupType\":({\"label\":\"Volume Group Type\"}), \"lvmVolumeGroup\":({\"label\":\"Volume Group Name\", \"no-options\":\"No available Volume Groups, please add in the `Host > Storage` page\"}), \"node\":({\"label\":\"Node\"})}), \"allowedTopologies\":({\"title\":\"Allowed Topologies\", \"tooltip\":\"Allowed Topologies helps scheduling virtual machines on hosts which match all of below expressions.\"}), \"internal\":({\"label\":\"Internal Storage Class\", \"cannotDeleteTooltip\":\"Internal storage class volumes cannot be deleted\", \"cannotDeleteOrDefaultTooltip\":\"Internal storage classes cannot be deleted or set as default\"}), \"cdiSettings\":({\"label\":\"CDI Settings\", \"volumeModeAccessModes\":({\"label\":\"Volume Mode / Access Modes\", \"tooltip\":\"Specifies the default volume mode and access modes.\", \"add\":\"Add\", \"volumeMode\":\"Volume Mode\", \"accessModes\":({\"label\":\"Access Modes\"})}), \"volumeSnapshotClass\":({\"label\":\"Volume Snapshot Class\", \"tooltip\":\"Sets the Volume Snapshot Class name to be used when taking snapshots of PVCs under this StorageClass.\"}), \"cloneStrategy\":({\"label\":\"Clone Strategy\", \"tooltip\":\"Defines the clone strategy to use for volumes created with this StorageClass.\", \"copy\":\"Copy\", \"snapshot\":\"Snapshot\", \"csiClone\":\"CSI Clone\"}), \"fileSystemOverhead\":({\"label\":\"File System Overhead\", \"tooltip\":\"Specifies the percentage of filesystem overhead to consider when calculating PVC size.\", \"placeholder\":\"e.g. 0.05 (up to 3 decimal places, between 0 and 1)\"})})}), \"vlanConfig\":({\"title\":\"Network Configuration\", \"createNetworkConfig\":\"Create Network Configuration\", \"action\":({\"migrate\":\"Migrate\"}), \"titles\":({\"nodeSelector\":\"Node Selector\", \"uplink\":\"Uplink\", \"bondOptions\":\"Bond Options\", \"attributes\":\"Attributes\", \"host\":\"Selected Hosts\"}), \"scheduling\":({\"affinity\":({\"allNodes\":\"Select all nodes\", \"specificNode\":\"Select specific node\", \"schedulingRules\":\"Select node(s) matching rules\"})}), \"uplink\":({\"nics\":({\"label\":\"NIC\", \"addLabel\":\"Add NIC\", \"overlayWarning\":\"The NIC selected here must match the NIC provided in the provider network.\", \"placeholder\":\"Select a NIC that is available on all the selected nodes\", \"validate\":({\"available\":\"NIC \\\"{nic}\\\" is not available on the selected nodes\"})}), \"linkAttributes\":({\"mtu\":({\"label\":\"MTU\"})}), \"bondOptions\":({\"mode\":({\"label\":\"Mode\"}), \"miimon\":({\"label\":\"Miimon\", \"tooltip\":\"Miimon specifies the MII link monitoring frequency in milliseconds. -1 means to keep the original value.\"})})}), \"nodeSelector\":({\"matchingNodes\":({\"matchesSome\":\"{matched, plural,\\n =0 {Matches 0 of {total, number} Nodes.}\\n =1 {Matches 1 of {total, number} Nodes: \\\"{sample}\\\"}\\n other {Matches {matched, number} of {total, number} existing Nodes, including \\\"{sample}\\\"}\\n}\"})})}), \"vlanStatus\":({\"vlanConfig\":({\"label\":\"Network Configuration\", \"l2VlanMode\":({\"access\":\"Access\", \"trunk\":\"Trunk\", \"label\":\"Mode\"}), \"vlanTrunk\":({\"minId\":\"Minimum VLAN ID\", \"maxId\":\"Maximum VLAN ID\", \"add\":\"Add VLAN Trunk\"})})}), \"clusterNetwork\":({\"title\":\"Cluster Network Configuration\", \"create\":({\"button\":({\"label\":\"Create a Cluster Network\"})}), \"clusterNetwork\":\"There are no network configurations defined.\", \"mgmt\":\"mgmt is a built-in cluster management network and does not support any additional network configurations.\", \"notExist\":\"Cluster Network \\\"{ clusterNetwork }\\\" does not exist\", \"notReady\":\"Cluster Network \\\"{ clusterNetwork }\\\" is not ready\"}), \"addons\":({\"descriptions\":({\"harvester-system/vm-import-controller\":\"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.\", \"harvester-system/pcidevices-controller\":\"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machine and guest clusters.\", \"cattle-logging-system/rancher-logging\":\"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.\", \"harvester-system/rancher-vcluster\":\"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.\", \"cattle-monitoring-system/rancher-monitoring\":\"rancher-monitoring is an add-on that collects Harvester cluster and virtual machine metrics and allows you to view the metrics on an embedded dashboard and send alert(s) to remote servers.\", \"vm-import-controller\":\"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.\", \"pcidevices-controller\":\"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machines and guest clusters.\", \"nvidia-driver-toolkit\":\"nvidia-driver-toolkit is an add-on to enable vGPU devices and assign them to Harvester virtual machines.\", \"rancher-logging\":\"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.\", \"rancher-monitoring\":\"rancher-monitoring is an add-on to collect Harvester cluster and virtual machine metrics, view them on the embedded dashboard, and send alert(s) to remote servers.\", \"rancher-vcluster\":\"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.\", \"harvester-seeder\":\"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.\", \"harvester-system/harvester-seeder\":\"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.\", \"harvester-csi-driver-lvm\":\"harvester-csi-driver-lvm is an add-on allowing users to create PVC through the LVM with local devices.\", \"descheduler\":\"The virtual machine auto balance optimizes workload scheduling by evicting pods that are not optimally placed according to administrator-defined policies.\"}), \"vmMigration\":({\"generic\":({\"unknown\":\"Unknown\", \"identifier\":\"Identifier\", \"podNetwork\":\"Pod Network\", \"usedBy\":\"Used by:\", \"vlan\":\"VLAN {id}\", \"vCpu\":\"{count} vCPU\", \"memoryGb\":\"{value} GB\", \"memoryTb\":\"{value} TB\", \"elapsed\":({\"hoursAndMinutes\":\"{hours} {hours, plural, one {hour} other {hours}} and {minutes} {minutes, plural, one {minute} other {minutes}}\", \"hours\":\"{hours} {hours, plural, one {hour} other {hours}}\", \"minutes\":\"{minutes} {minutes, plural, one {minute} other {minutes}}\"})}), \"errors\":({\"failedLoadPlans\":\"Failed to load migration plans\", \"failedLoadVms\":\"Failed to load virtual machines\", \"failedRefreshVms\":\"Failed to refresh virtual machines\", \"failedLoadProviders\":\"Failed to load providers\", \"failedLoadProvider\":\"Failed to load provider: {error}\", \"failedResolveDetails\":\"Failed to resolve network and datastore details\", \"failedDecodeCredentials\":\"Failed to decode provider credentials\", \"connectionFailed\":\"Connection failed\", \"providerNotReady\":\"Provider not ready\"}), \"labels\":({\"dashboard\":\"Migration Overview\", \"provider\":\"Providers\", \"networkMap\":\"Network Maps\", \"storageMap\":\"Storage Maps\", \"plan\":\"Migration Plans\", \"migration\":\"Migrations\"}), \"providerWizard\":({\"title\":\"Create Provider\", \"editTitle\":\"Edit Provider\"}), \"wizard\":({\"title\":\"VM Migration\", \"steps\":({\"configureProvider\":({\"label\":\"Provider\", \"description\":\"Configure Provider\"}), \"selectVms\":({\"label\":\"VMs\", \"description\":\"Select VMs\"}), \"configureMappings\":({\"label\":\"Mappings\", \"description\":\"Define Mappings\"}), \"reviewMigration\":({\"label\":\"Migration Plan\", \"description\":\"Review Migration Plan\"})})}), \"fields\":({\"username\":\"Username\", \"password\":\"Password\"}), \"configureProvider\":({\"title\":\"Configure Provider\", \"description\":\"Connect to your VMware vCenter or ESXi host to discover virtual machines for migration\", \"connectionDetails\":\"Connection Details\", \"providerSelect\":\"Provider\", \"createNew\":\"Create new provider\", \"requirementsTitle\":\"Requirements\", \"requirementsText\":\"To migrate virtual machines from VMware, you will need a vCenter Server running version 6.5 or higher with a user account that has at least read permissions, and the source environment must be network-accessible from Rancher.\", \"name\":\"Name\", \"urlLabel\":\"vCenter/ESXi URL\", \"urlPlaceholder\":\"https://vcenter.example.com/sdk\", \"urlHint\":\"Enter the full URL including https://\", \"skipSsl\":\"Skip SSL certificate verification\", \"skipSslHint\":\"Not recommended for production environments\", \"testConnection\":({\"action\":\"Test Connection\", \"success\":\"Connection successful\", \"error\":\"Connection failed\", \"waiting\":\"Testing connection...\"}), \"testSuccess\":\"Connection test passed\", \"testFailed\":\"Connection test failed\", \"testMissingFields\":\"Please fill in all required fields before testing\", \"testTimeout\":\"Connection test timed out — the provider did not report a status in time\", \"save\":\"Save Provider and Continue\", \"saveExisting\":\"Check Provider and Continue\"}), \"selectVms\":({\"title\":\"Select Virtual Machines\", \"description\":\"Select the virtual machines you want to migrate from the source provider\", \"discovered\":\"{count} VMs discovered from\", \"lastSynced\":\"Last synced {time} ago • \", \"refreshNow\":\"Refresh now\", \"availableVms\":\"Available Virtual Machines\", \"selected\":\"selected\", \"saveSelection\":\"Save Selection and Continue\", \"selectAllBanner\":({\"pageOnly\":\"Your current selection includes only VMs currently shown on the page.\", \"selectAll\":\"Select all {count} VMs from this provider\", \"allSelected\":\"Your current selection includes all VMs.\", \"clearSelection\":\"Clear Selection\"}), \"manualEntry\":({\"title\":\"Add Virtual Machines\", \"description\":\"No VMs were discovered from the provider inventory. Add VMs manually by entering their IDs and names.\", \"vmId\":\"VM ID\", \"vmIdPlaceholder\":\"e.g. vm-60527\", \"add\":\"Add\", \"added\":\"VMs added\"}), \"columns\":({\"vmName\":\"VM Name\", \"vmId\":\"VM ID\", \"os\":\"Operating System\", \"resources\":\"Resources\", \"powerState\":\"Power State\", \"network\":\"Network\", \"datastore\":\"Datastore\"})}), \"dashboard\":({\"title\":\"Virtual Machine Migration Overview\", \"description\":\"Migrate virtual machines from VMware vSphere to Harvester using cold migration for data consistency. Create a migration plan to select VMs, map networks and storage, and prepare a migration to Harvester.\", \"createPlan\":\"Create Migration\", \"tableTitle\":\"Migrations\", \"columns\":({\"status\":\"Status\", \"plan\":\"Migration Plan\", \"progress\":\"Progress\", \"mappings\":\"Mappings\", \"duration\":\"Duration\"}), \"progress\":({\"failed\":\"Failed\", \"migration\":\"Migration\", \"initializingMigration\":\"Initializing migration\", \"finishedSuccessfully\":\"Finished Successfully\", \"step\":\"Step {index}\", \"vmCount\":\"{count} VMs\", \"vmId\":\"id: {id}\"})}), \"configureMappings\":({\"title\":\"Set Mappings\", \"description\":\"Map VMware networks and datastores to Harvester and Longhorn target resources\", \"save\":\"Save Mappings and Continue\", \"noTemplate\":\"Start from scratch\", \"removeMap\":\"Remove Map\", \"networkMapping\":({\"title\":\"Network Mapping\", \"description\":\"Map VMware port groups to Harvester networks\", \"placeholder\":\"Choose a Harvester network\", \"template\":\"Use existing network mapping as template\", \"options\":({\"podNetworking\":\"Management Network\", \"ignored\":\"Ignored\"})}), \"storageMapping\":({\"title\":\"Storage Mapping\", \"description\":\"Map VMware datastores to Harvester storage classes\", \"placeholder\":\"Choose a Longhorn Storage Volume\", \"template\":\"Use existing storage mapping as template\"})}), \"reviewMigration\":({\"title\":\"Review Migration Plan\", \"description\":\"Confirm your migration settings before starting the transfer of VMs to the target cluster.\", \"planName\":\"Name\", \"planNamePlaceholder\":\"e.g. my-migration-plan\", \"migrationDetails\":\"Migration Details\", \"totalVms\":\"Total VMs\", \"vcpu\":\"vCPU\", \"memory\":\"Memory\", \"storage\":\"Storage\", \"source\":\"Source\", \"targetNamespace\":\"Target Namespace\", \"migrationMode\":\"Migration Mode\", \"coldMigration\":\"Cold Migration\", \"virtualMachines\":\"Virtual Machines\", \"warningTitle\":\"Cold Migration Warning\", \"warningMessage\":\"All source VMs will be powered off, and downtime will occur during migration. Plan your maintenance window accordingly and notify relevant stakeholders\", \"startMigration\":\"Start Migration Plan\"}), \"plan\":({\"states\":({\"error\":\"Error\", \"canceled\":\"Canceled\", \"inProgress\":\"In Progress\", \"active\":\"Succeeded\"}), \"actions\":({\"start\":\"Start\", \"restart\":\"Restart\", \"stop\":\"Stop\"})}), \"deleteDialog\":({\"warning\":\"Deleting this migration plan will also delete the following related resources\"})}), \"vmImport\":({\"titles\":({\"basic\":\"Basic\", \"auth\":\"Authentication\", \"pvc\":\"Volume\", \"networking\":\"Network Mapping\", \"advanced\":\"Advanced\"}), \"labels\":({\"vmimport\":\"Virtual Machine Import\", \"vmimportSourceVMWare\":\"Source VMWare\", \"vmimportSourceOpenStack\":\"Source OpenStack\", \"vmimportSourceOVA\":\"Source OVA\"}), \"fields\":({\"sourceProvider\":\"Source Provider Type\", \"sourceCluster\":\"Source Cluster\", \"vmName\":\"VM Name\", \"targetStorageClass\":\"Target Storage Class\", \"sourceNetwork\":\"Source Network Name\", \"destNetwork\":\"Destination Network\", \"interfaceModel\":\"Interface Model\", \"folder\":\"Folder\", \"diskBus\":\"Default Disk Bus\", \"defaultInterface\":\"Default Network Interface\", \"skipPreflight\":\"Skip Preflight Checks\", \"forcePowerOff\":\"Force Power Off Source VM\", \"username\":\"Username\", \"password\":\"Password\", \"caCert\":\"CA Certificate (PEM)\", \"selectSecret\":\"Select Secret\", \"createSecret\":\"Create New Credentials\", \"useSecret\":\"Use Existing Secret\", \"none\":\"None (Public URL)\"}), \"placeholders\":({\"selectCluster\":\"Select a cluster...\", \"selectProviderFirst\":\"Select a provider type first\", \"matchSource\":\"Must match the name in the source cluster\", \"folderExample\":\"e.g. /Datacenters/DC1/vm\", \"caCert\":\"-----BEGIN CERTIFICATE----- ...\"}), \"options\":({\"useDefault\":\"Use Default\"}), \"actions\":({\"addNetwork\":\"Add Network Mapping\", \"remove\":\"Remove\"}), \"errors\":({\"rfc1123\":\"Invalid format. Name must be lowercase, alphanumeric, and cannot contain spaces (e.g. \\\"my-vm-1\\\"). If your Source VM name does not match this, you must rename it on the Source cluster first.\", \"networkMappingRequired\":\"Every Network Mapping row must have a Source and Destination selected.\"}), \"openstack\":({\"fields\":({\"endpoint\":\"Identity Service Endpoint\", \"region\":\"Region\", \"projectName\":\"Project Name\", \"domainName\":\"Domain Name\", \"retryCount\":\"Upload Image Retry Count\", \"retryDelay\":\"Upload Image Retry Delay\"}), \"placeholders\":({\"endpoint\":\"e.g. https://devstack/identity\", \"region\":\"e.g. RegionOne\", \"projectName\":\"e.g. admin\", \"domainName\":\"e.g. default\", \"retryCount\":\"Default: 30\", \"retryDelay\":\"Default: 10\"})}), \"vmware\":({\"fields\":({\"endpoint\":\"vCenter Endpoint\", \"datacenter\":\"Datacenter\"}), \"placeholders\":({\"endpoint\":\"e.g. https://vscim/sdk\", \"datacenter\":\"e.g. DC0\"}), \"tooltips\":({\"datacenter\":\"The exact name of the Datacenter object in vCenter\"})}), \"ova\":({\"fields\":({\"url\":\"URL\", \"httpTimeout\":\"HTTP Timeout\"}), \"placeholders\":({\"url\":\"e.g. https://download.example.com/images/my-vm.ova\", \"httpTimeout\":\"Default: 600\"})})}), \"rancherVcluster\":({\"accessRancher\":\"Access the Rancher Dashboard\", \"hostname\":\"Hostname\", \"rancherVersion\":\"Rancher Version\", \"password\":\"Bootstrap Password\"}), \"switchFailed\":\"{action} {name} failed!\", \"nvidiaDriverToolkit\":({\"titles\":({\"basic\":\"Controller\", \"image\":\"Image\", \"driver\":\"Driver\"}), \"image\":({\"tag\":\"Image Tag\", \"repository\":\"Image Repository\"}), \"driver\":({\"location\":\"Driver Location\"}), \"enable\":({\"title\":\"Enable NVIDIA Driver Toolkit\"}), \"parsingSpecError\":\"The field 'spec.valuesContent' has invalid format.\"}), \"usbController\":({\"titles\":({\"basic\":\"Basic\"})})}), \"loadBalancer\":({\"label\":\"Load Balancers\", \"tabs\":({\"basic\":\"Basic\", \"listeners\":\"Listeners\", \"healthCheck\":\"Health Check\", \"backendServer\":\"Backend Server Selector\"}), \"workloadType\":({\"label\":\"Workload Type\", \"options\":({\"cluster\":\"Guest Kubernetes Cluster\", \"vm\":\"Virtual Machine\"})}), \"ipam\":({\"label\":\"IPAM\", \"options\":({\"dhcp\":\"DHCP\", \"pool\":\"Pool\"})}), \"ipPool\":({\"label\":\"IP Pool\", \"options\":({\"none\":\"Auto (Select IP Pool automatically)\"})}), \"listeners\":({\"name\":({\"label\":\"Name\"}), \"protocol\":({\"label\":\"Protocol\"}), \"port\":({\"label\":\"Port\"}), \"backendPort\":({\"label\":\"Backend Port\", \"placeholder\":\"e.g. 80\"})}), \"backendServerSelector\":({\"matchingVMs\":({\"matchesSome\":\"{matched, plural,\\n =0 {Matches 0 of {total, number} virtual machines in the namespace where the load balancer is.}\\n =1 {Matches 1 of {total, number} virtual machines in the namespace where the load balancer is: \\\"{sample}\\\"}\\n other {Matches {matched, number} of {total, number} existing virtual machines in the namespace where the load balancer is, including \\\"{sample}\\\"}\\n}\"})}), \"backendServers\":({\"label\":\"Backend Servers\"}), \"healthCheck\":({\"warning\":({\"portInUse\":\"Warning, the Backend Port {port} is in use in Health Check settings. If you need to update the port, update the Health Check settings accordingly.\"})})}), \"ipPool\":({\"label\":\"IP Pools\", \"network\":({\"label\":\"Virtual Machine Network\"}), \"tabs\":({\"range\":\"Range\", \"scope\":\"Scope\", \"selector\":\"Selector\"}), \"subnet\":({\"label\":\"Subnet\"}), \"startIP\":({\"label\":\"Start IP\"}), \"endIP\":({\"label\":\"End IP\"}), \"gateway\":({\"label\":\"Gateway\"}), \"namespace\":({\"label\":\"Namespace\"}), \"project\":({\"label\":\"Project\"}), \"guestCluster\":({\"label\":\"Guest Kubernetes Cluster\"}), \"availableIP\":({\"label\":\"Available IP Count\"}), \"scope\":({\"label\":\"Scope\", \"addLabel\":\"Add Scope\"}), \"priority\":({\"label\":\"Priority\"}), \"cidr\":({\"addLabel\":\"Add CIDR\"}), \"range\":({\"addLabel\":\"Add Range\"})}), \"hostNetworkConfig\":({\"label\":\"Host Networks\", \"mode\":({\"label\":\"Mode\"}), \"tabs\":({\"mode\":\"Mode\", \"nodeSelector\":\"Node Selector\"}), \"nodeSelector\":({\"addButton\":\"Add Node Selector\"}), \"underlay\":({\"label\":\"Underlay\", \"tooltip\":\"Allow this interface to act as the underlay for VM overlay networks.\", \"conflict\":\"`{name}` host network config already has underlay enabled. Only one underlay is allowed in the cluster.\", \"noKubeovn\":({\"prefix\":\"The kubeovn-operator add-on is not enabled. Click\", \"middle\":\"here\", \"suffix\":\"to enable the add-on for overlay networking.\"})}), \"vlanID\":({\"label\":\"VLAN ID\"}), \"ipRange\":({\"label\":\"IP Range ({node})\", \"placeholder\":\"e.g. 192.168.1.10/24\"}), \"ips\":({\"nodeLabel\":\"Node\", \"label\":\"IP\", \"placeholder\":\"e.g. 192.168.1.10/24\"})}), \"service\":({\"healthCheckPort\":({\"label\":\"Health Check Port\"}), \"healthCheckSuccessThreshold\":({\"label\":\"Health Check Success Threshold\", \"description\":\"If the number of times the probe continuously detects an address successfully reaches the success threshold, then the backend server can start to forward traffic.\"}), \"healthCheckFailureThreshold\":({\"label\":\"Health Check Failure Threshold\", \"description\":\"The backend server will stop forwarding traffic if the number of health check failures reaches the failure threshold.\"}), \"healthCheckPeriod\":({\"label\":\"Health Check Period\"}), \"healthCheckTimeout\":({\"label\":\"Health Check Timeout\"}), \"healthCheckEnabled\":({\"label\":\"Health Check\"})}), \"secret\":({\"label\":\"Secrets\"}), \"sriov\":({\"label\":\"SR-IOV Network Devices\", \"nodeName\":\"Node\", \"numVFs\":\"Number Of Virtual Functions\", \"vfAddresses\":\"Virtual Functions Addresses\", \"showMore\":\"Show More\", \"parentSriov\":\"Filter By Parent SR-IOV Netork Device\", \"parentSriovGPU\":\"Filter By Parent SR-IOV GPU Device\"}), \"sriovgpu\":({\"label\":\"SR-IOV GPU Devices\", \"nodeName\":\"Node\", \"numVFs\":\"Number of Virtual Functions\", \"vfAddresses\":\"Virtual Functions Addresses\", \"vGpuDevices\":\"vGPU Devices\", \"showMore\":\"Show More\", \"parentSriov\":\"Filter By Parent SR-IOV GPU\", \"noPermission\":\"Please contact your system administrator to add Harvester add-ons first.\", \"goSetting\":({\"prefix\":\"The nvidia-driver-toolkit add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it to manage your SR-IOV GPU devices.\"})}), \"migconfiguration\":({\"label\":\"vGPU MIG Configurations\", \"status\":({\"outOfSync\":\"Out of Sync\"}), \"infoBanner\":\"To configure the MIG configuration, please disable it first and re-enable after editing the configuration.\", \"profileSpec\":\"Profile Specs\", \"profileStatus\":\"Profile Status\", \"tableHeaders\":({\"profileName\":\"Profile Name\", \"total\":\"Total\", \"vGPUID\":\"vGPU ID\", \"available\":\"Available\", \"requested\":\"Requested\"}), \"requested\":\"Requested\", \"available\":\"Available\", \"total\":\"Total\", \"vGPUID\":\"vGPU ID\", \"goSriovGPU\":({\"prefix\":\"Please enable the supported GPU devices in\", \"middle\":\"SR-IOV GPU Devices\", \"suffix\":\"page to manage the vGPU MIG configurations.\"})}), \"vgpu\":({\"label\":\"vGPU Devices\", \"noPermission\":\"Please contact system administrator to add Harvester add-ons first.\", \"detachWarning\":({\"title\":\"Cannot Disable vGPU\", \"message\":\"Please detach the device from the VM and save it first before disabling this vGPU device.\"}), \"goSetting\":({\"prefix\":\"The nvidia-driver-toolkit add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it to manage your vGPU devices.\"}), \"enableGroup\":\"Enable Group\", \"disableGroup\":\"Disable Group\", \"enable\":({\"title\":\"Select vGPU\", \"type\":\"Type\"}), \"available\":\"Available Devices\", \"compatibleNodes\":\"Compatible Nodes\", \"impossibleSelection\":\"There are no hosts with all of the selected devices.\", \"howToUseDevice\":\"Use the table below to enable vGPU devices you want to use in this virtual machine.\", \"deviceInTheSameHost\":\"You can only select devices on the same host.\"}), \"usb\":({\"label\":\"USB Devices\", \"noPermission\":\"Please contact system admin to add Harvester add-ons first\", \"goSetting\":({\"prefix\":\"The pcidevices-controller add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it to manage your USB devices.\"}), \"enableGroup\":\"Enable Group\", \"disableGroup\":\"Disable Group\", \"available\":\"Available USB Devices\", \"compatibleNodes\":\"Compatible Nodes\", \"impossibleSelection\":\"There are no hosts with all of the selected devices.\", \"howToUseDevice\":\"Use the table below to enable USB passthrough on each device you want to use in this VM.\", \"deviceInTheSameHost\":\"You can only select devices on the same host.\", \"showCompatibility\":\"Show device compatibility matrix\", \"hideCompatibility\":\"Hide device compatibility matrix\", \"claimError\":\"Error enabling passthrough on {name}\", \"unclaimError\":\"Error disabling passthrough on {name}\", \"cantUnclaim\":\"You cannot disable passthrough on a device claimed by another user.\", \"detachWarning\":({\"title\":\"Cannot Disable Passthrough\", \"message\":\"Please detach the device from the VM and save it first before disabling passthrough.\"}), \"enablePassthroughWarning\":\"Please re-enable the USB device if the device path changes in the following situations:  1) Re-plugging the USB device.  2) Rebooting the node. An incorrect device path may cause passthrough to fail.\", \"classType\":\"Class Type\"}), \"harvesterVlanConfigMigrateDialog\":({\"targetClusterNetwork\":({\"label\":\"Target Cluster Network\", \"placeholder\":\"Choose Target Cluster Network\"})}), \"seeder\":({\"banner\":({\"enable\":({\"prefix\":\"The \\\"harvester-seeder\\\" add-on is disabled.\", \"middle\":\"Click here\", \"suffix\":\"to enable it.\"}), \"noAccess\":\"Please contact your system administrator to enable the Out-of-Band Access first.\", \"noAddon\":\"The \\\"harvester-seeder\\\" add-on does not exist, please check if it is installed.\", \"noInventory\":\"Waiting for \\\"inventories.metal.harvesterhci.io\\\" to be ready.\"}), \"inventory\":({\"host\":({\"label\":\"Host\", \"placeholder\":\"e.g. 172.16.1.1\"}), \"port\":({\"label\":\"Port\", \"placeholder\":\"e.g. 623\"}), \"insecureTLS\":({\"label\":\"Insecure TLS\"}), \"secret\":({\"label\":\"Secret\", \"create\":({\"title\":\"Add Secret\"})}), \"event\":({\"label\":\"Event\"}), \"pollingInterval\":({\"label\":\"Polling Interval\"})})})}), \"typeDescription\":({\"harvester\":\"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos and color scheme.\"}), \"advancedSettings\":({\"experimental\":\"Experimental features allow users to test and evaluate early-access functionality prior to official supported releases\", \"descriptions\":({\"harv-vlan\":\"Default Network Interface name of the VLAN network.\", \"harv-backup-target\":\"Custom backup target to store virtual machine backups.\", \"branding\":\"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos, and color scheme.\", \"harv-csi-driver-config\":\"Configure additional information for CSI drivers.\", \"harv-csi-online-expand-validation\":\"Allow online volume expansion for specific CSI drivers.\", \"harv-containerd-registry\":\"Containerd Registry Configuration to connect private registries.\", \"harv-log-level\":\"Configure Harvester server log level. Defaults to Info.\", \"harv-server-version\":\"Harvester server version.\", \"harv-upgrade-checker-enabled\":\"Specifies whether to enable Harvester upgrade check or not. Default is True.\", \"harv-upgrade-checker-url\":\"Default Harvester upgrade check url. Only used when the upgrade-checker-enabled is equal to True.\", \"harv-ui-source\":\"Configure how to load the UI source. The `External` option is used to load the UI from a ui-index URL, while the `Bundled` option loads the UI from the local Harvester server.\", \"harv-ui-index\":\"HTML index location for the UI.\", \"harv-cluster-registration-url\":\"Registration URL for multi-cluster management.\", \"harv-http-proxy\":\"HTTP proxy for Harvester to access external services.\", \"harv-additional-ca\":\"Custom CA root certificates for TLS validation.\", \"harv-overcommit-config\":\"Resource overcommit configuration.\", \"harv-support-bundle-timeout\":\"Support bundle timeout configuration in minutes, use 0 to disable the timeout.\", \"harv-support-bundle-file-name\":\"Support bundle file name configuration.\", \"harv-support-bundle-expiration\":\"Support bundle expiration configuration in minutes.\", \"harv-support-bundle-node-collection-timeout\":\"Support bundle node collection timeout configuration in minutes.\", \"harv-vm-force-reset-policy\":\"Configuration for the force-reset action when a virtual machine is stuck on a node that is down.\", \"harv-ssl-parameters\":\"Custom SSL Parameters for TLS validation.\", \"harv-storage-network\":\"Longhorn storage-network setting.\", \"harv-rwx-network\":\"Configure RWX network behavior for shared or dedicated storage network usage.\", \"harv-support-bundle-namespaces\":\"Select additional namespaces to include in the support bundle.\", \"harv-auto-disk-provision-paths\":\"Specify the disks(using glob pattern) that Harvester will automatically add as virtual machine storage.\", \"harv-support-bundle-image\":\"Support bundle image configuration. Find different versions in rancher/support-bundle-kit .\", \"harv-release-download-url\":\"This setting allows you to configure the upgrade release download URL address. Harvester will get the ISO URL and checksum value from the ($URL/$VERSION/version.yaml) file hosted by the configured URL.\", \"harv-default-vm-termination-grace-period-seconds\":\"Configure the virtual machine termination grace period for virtual machine stop.\", \"harv-ntp-servers\":\"Configure NTP server. You can configure multiple IPv4 addresses or host addresses.\", \"harv-auto-rotate-rke2-certs\":\"The certificate rotation mechanism relies on Rancher. Harvester will automatically update certificates generation to trigger rotation.\", \"harv-kubeconfig-default-token-ttl-minutes\":\"TTL (in minutes) applied on Harvester administration kubeconfig files. Default is 0, which means to never expire.\", \"harv-longhorn-v2-data-engine-enabled\":\"Enable the Longhorn V2 data engine. Default is false. Changing this setting will restart RKE2 on all nodes. This will not affect running VM workloads. If you see \\\"not enough hugepages-2Mi capacity\\\" errors when enabling this setting, wait a minute for the error to clear. If the error remains, reboot the affected node. \", \"harv-longhorn-v2-data-engine-hugepage-enabled\":\"Enable hugepages when using the Longhorn V2 data engine. Default is true. Disabling hugepages reduces memory pressure on low-spec nodes and increases deployment flexibility. However, performance may be lower compared to running with hugepages.\", \"harv-longhorn-v2-data-engine-memory-size\":\"Configure the amount of memory allocated to the SPDK target daemon when using the Longhorn V2 data engine. Default is 2048 MiB.\", \"harv-additional-guest-memory-overhead-ratio\":\"The ratio for kubevirt to adjust the VM overhead memory. The value could be zero, empty value or floating number between 1.0 and 10.0, default to 1.5.\", \"harv-upgrade-config\":\"Configure image preloading and VM restore options for upgrades. See related fields in settings/upgrade-config \", \"harv-vm-migration-network\":\"Segregated network for VM migration traffic.\", \"harv-rancher-cluster\":\"Configure Rancher cluster integration settings for guest cluster management.\", \"harv-max-hotplug-ratio\":\"The ratio for kubevirt to limit the maximum CPU and memory that can be hotplugged to a VM. The value could be an integer between 1 and 20, default to 4.\", \"harv-kubevirt-migration\":\"Configure cluster-wide KubeVirt live migration parameters.\", \"harv-instance-manager-resources\":\"Configure resource percentage reservations for Longhorn instance manager V1 and V2. Valid instance manager CPU range between 0 - 40.\", \"harv-cluster-pod-security-standard\":\"Enforce Kubernetes Pod Security Standards (PSS) at the cluster level.\"})}), \"typeLabel\":({\"kubevirt.io.virtualmachine\":\"{count, plural,\\n one { Virtual Machine }\\n other { Virtual Machines }\\n}\", \"harvesterhci.io.virtualmachineimage\":\"{count, plural,\\n one { Image }\\n other { Images }\\n}\", \"harvesterhci.io.keypair\":\"{count, plural,\\n one { SSH Key }\\n other { SSH Keys }\\n}\", \"harvesterhci.io.host\":\"{count, plural,\\n one { Host }\\n other { Hosts }\\n}\", \"harvesterhci.io.networkattachmentdefinition\":\"{count, plural,\\n one { Virtual Machine Network }\\n other { Virtual Machine Networks }\\n}\", \"harvesterhci.io.volume\":\"{count, plural,\\n one { Volume }\\n other { Volumes }\\n}\", \"harvesterhci.io.user\":\"{count, plural,\\n one { User }\\n other { Users }\\n}\", \"harvesterhci.io.setting\":\"{count, plural,\\n one { Setting }\\n other { Settings }\\n}\", \"harvesterhci.io.virtualmachinetemplateversion\":\"{count, plural,\\n one { Template }\\n other { Templates }\\n}\", \"harvesterhci.io.schedulevmbackup\":\"{count, plural,\\n one { Virtual Machine Schedule }\\n other { Virtual Machine Schedules }\\n}\", \"harvesterhci.io.virtualmachinebackup\":\"{count, plural,\\n one { Virtual Machine Backup }\\n other { Virtual Machine Backups }\\n}\", \"kubeovn.io.vpc\":\"{count, plural,\\n one { Virtual Private Cloud }\\n other { Virtual Private Clouds }\\n}\", \"kubeovn.io.vlan\":\"{count, plural,\\n one { VLAN Network }\\n other { VLAN Networks }\\n}\", \"kubeovn.io.providernetwork\":\"{count, plural,\\n one { Provider Network }\\n other { Provider Networks }\\n}\", \"kubeovn.io.vpcnatgateway\":\"{count, plural,\\n one { NAT Gateway }\\n other { NAT Gateways }\\n}\", \"kubeovn.io.iptablessnatrule\":\"{count, plural,\\n one { Source Rule }\\n other { Source Rules }\\n}\", \"kubeovn.io.iptablesdnatrule\":\"{count, plural,\\n one { Destination Rule }\\n other { Destination Rules }\\n}\", \"kubeovn.io.iptableseip\":\"{count, plural,\\n one { External IP }\\n other { External IPs }\\n}\", \"networking.k8s.io.networkpolicy\":\"{count, plural,\\n one { Network Policy }\\n other { Network Policies }\\n}\", \"harvesterhci.io.cloudtemplate\":\"{count, plural,\\n one { Cloud Configuration Template }\\n other { Cloud Configuration Templates }\\n}\", \"harvesterhci.io.volumesnapshot\":\"{count, plural,\\n one { Volume Snapshot }\\n other { Volume Snapshots }\\n}\", \"harvesterhci.io.vmsnapshot\":\"{count, plural,\\n one { Virtual Machine Snapshot }\\n other { Virtual Machine Snapshots }\\n}\", \"network.harvesterhci.io.vlanconfig\":\"{count, plural,\\n one { Network Configuration }\\n other { Network Configurations }\\n}\", \"harvesterhci.io.monitoring.alertmanagerconfig\":\"{count, plural,\\n one { Alertmanager Configuration }\\n other { Alertmanager Configurations }\\n}\", \"harvesterhci.io.logging.clusterflow\":\"{count, plural,\\n one { Cluster Flow }\\n other { Cluster Flows }\\n}\", \"harvesterhci.io.logging.clusteroutput\":\"{count, plural,\\n one { Cluster Output }\\n other { Cluster Outputs }\\n}\", \"harvesterhci.io.logging.flow\":\"{count, plural,\\n one { Flow }\\n other { Flows }\\n}\", \"harvesterhci.io.logging.output\":\"{count, plural,\\n one { Output }\\n other { Outputs }\\n}\", \"harvesterhci.io.storage\":\"{count, plural,\\n one { Storage Class }\\n other { Storage Classes }\\n}\", \"devices.harvesterhci.io.pcidevice\":\"{count, plural,\\n one { PCI Device }\\n other { PCI Devices }\\n}\", \"network.harvesterhci.io.clusternetwork\":\"{count, plural,\\n one { Cluster Network }\\n other { Cluster Networks }\\n}\", \"network.harvesterhci.io.hostnetworkconfig\":\"{count, plural,\\n one { Host Network }\\n other { Host Networks }\\n}\", \"harvesterhci.io.addon\":\"{count, plural,\\n one { Add-on }\\n other { Add-ons }\\n}\", \"devices.harvesterhci.io.sriovnetworkdevice\":\"{count, plural,\\n one { SR-IOV Network Device }\\n other { SR-IOV Network Devices }\\n}\", \"devices.harvesterhci.io.sriovgpudevice\":\"{count, plural,\\n one { SR-IOV GPU Device }\\n other { SR-IOV GPU Devices }\\n}\", \"devices.harvesterhci.io.vgpudevice\":\"{count, plural,\\n one { vGPU Device }\\n other { vGPU Devices }\\n}\", \"devices.harvesterhci.io.migconfiguration\":\"{count, plural,\\n one { vGPU MIG Configuration }\\n other { vGPU MIG Configurations }\\n}\", \"harvesterhci.io.secret\":\"{count, plural,\\n one { Secret }\\n other { Secrets }\\n}\", \"harvesterhci.io.blockdevice\":\"{count, plural,\\n one { Disk }\\n other { Disks }\\n}\", \"loadbalancer.harvesterhci.io.loadbalancer\":\"{count, plural,\\n one { Load Balancer }\\n other { Load Balancers }\\n}\", \"loadbalancer.harvesterhci.io.ippool\":\"{count, plural,\\n one { IP Pool }\\n other { IP Pools }\\n}\", \"migration.harvesterhci.io.openstacksource\":\"{count, plural,\\n one { OpenStack Source }\\n other { OpenStack Sources }\\n}\", \"migration.harvesterhci.io.vmwaresource\":\"{count, plural,\\n one { VMware Source }\\n other { VMware Sources }\\n}\", \"migration.harvesterhci.io.ovasource\":\"{count, plural,\\n one { OVA Source }\\n other { OVA Sources }\\n}\", \"migration.harvesterhci.io.virtualmachineimport\":\"{count, plural,\\n one { Virtual Machine Import }\\n other { Virtual Machine Imports }\\n}\", \"forklift.konveyor.io.provider\":\"{count, plural,\\n one { Provider }\\n other { Providers }\\n}\", \"forklift.konveyor.io.networkmap\":\"{count, plural,\\n one { Network Map }\\n other { Network Maps }\\n}\", \"forklift.konveyor.io.storagemap\":\"{count, plural,\\n one { Storage Map }\\n other { Storage Maps }\\n}\", \"forklift.konveyor.io.plan\":\"{count, plural,\\n one { Migration Plan }\\n other { Migration Plans }\\n}\", \"forklift.konveyor.io.migration\":\"{count, plural,\\n one { Migration }\\n other { Migrations }\\n}\"})})];\nmodule.exports = doc.length <= 1 ? doc[0] : doc;"],"names":["doc","module","exports","length"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"harvester-1.9.0-rc2.umd.min.37.js","mappings":"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","sources":["webpack://harvester-1.9.0-rc2/./l10n/en-us.yaml"],"sourcesContent":["const doc = [({\"wizard\":({\"create\":\"Create\", \"next\":\"Proceed\", \"previous\":\"Back\"}), \"generic\":({\"tip\":\"Tip\", \"resourceExternalLinkTips\":\"External Link\", \"namespace\":\"Namespace\", \"notReady\":\"Not Ready\", \"labels\":\"Labels\", \"inProgress\":\"In Progress\", \"basic\":\"Basic\", \"loading\":\"Loading...\", \"none\":\"None\", \"duration\":({\"infinite\":\"Infinite\", \"1s\":\"1 second\", \"5s\":\"5 seconds\", \"10s\":\"10 seconds\", \"30s\":\"30 seconds\", \"1m\":\"1 minute\", \"3m\":\"3 minutes\", \"5m\":\"5 minutes\"})}), \"unsupported\":({\"serverVersion\":\"Current version: {serverVersion}\", \"description\":\"Harvester ui only supports Harvester cluster version greater or equal to 1.3.0.\", \"learnMore\":\"Learn more about Harvester from the Harvester Web Site or read the Harvester Docs \"}), \"nav\":({\"group\":({\"networks\":\"Networks\", \"backupAndSnapshot\":\"Backup and Snapshots\", \"Monitoring\":\"Monitoring\", \"Logging\":\"Logging\", \"Monitoring and Logging\":\"Monitoring and Logging\", \"vmimport\":\"Virtual Machine Imports\", \"vmMigration\":\"Virtual Machine Migration\", \"Configurations\":\"Configurations\"})}), \"resourceTable\":({\"groupBy\":({\"device\":\"Group by Device\"})}), \"validation\":({\"arrayCountRequired\":\"At least {count} {key} {count, plural, =1 {is} other {are}} required, and {key} can not be empty.\"}), \"members\":({\"clusterMemebership\":\"Cluster Membership\", \"projectMembership\":\"Project Membership\"}), \"asyncButton\":({\"createAndStart\":({\"action\":\"Create and Start\"}), \"restart\":({\"action\":\"Save and Restart\", \"success\":\"Restarted\", \"waiting\":\"Restarting…\"})}), \"dialog\":({\"confirmExecution\":({\"title\":\"Are you sure?\", \"andOthers\":\"{count, plural,\\n=0 {}\\n=1 { and one other }\\nother { and {count} other }\\n}\", \"protip\":\"Tip: Hold the {alternateLabel} key while clicking action to bypass this confirmation\", \"stop\":({\"message\":\"Are you sure you want to stop the {type} {names}?\"}), \"pause\":({\"message\":\"Are you sure you want to pause the {type} {names}?\"}), \"restart\":({\"message\":\"Are you sure you want to restart the {type} {names}?\"}), \"softreboot\":({\"message\":\"Are you sure you want to soft reboot the {type} {names}?\"})}), \"promptRemove\":({\"title\":\"Delete {type}\", \"warningMessage\":\"Deleting the selected {type} permanently removes all resources on {thisOrThese} {type}. This action is irreversible. Do you want to continue?\", \"confirmName\":\"Type {nameToMatch} to delete the {type}:\", \"protip\":\"Tip: Hold the {alternateLabel} key while clicking Delete to bypass the confirmation step.\"})}), \"harvester\":({\"branding\":({\"logos\":({\"tip\":\"Upload a logo to replace the Harvester logo in the top-level navigation header. Image height should be 21 pixels with a max width of 200 pixels. Max file size is 20KB. Accepted formats: JPEG, PNG, SVG.\"}), \"favicon\":({\"tip\":\"Upload an icon to replace the Harvester favicon in the browser tab. Max file size is 20KB\"})}), \"productLabel\":\"Harvester\", \"modal\":({\"backup\":({\"success\":\"Backup { backUpName } has been initiated.\", \"addBackup\":\"Add Backup\", \"fileSystemFreezeDeadline\":({\"label\":\"File System Freeze Deadline\"})}), \"quota\":({\"editVMQuota\":\"Edit VM Quota\", \"editQuota\":\"Edit Quota\", \"bannerMessage\":\"Set to empty string or 0 to remove total snapshot size quota.\"}), \"restore\":({\"success\":\"Restore { name } created successfully.\", \"title\":\"Backup and Restore\", \"selectBackup\":\"Select Backup\", \"message\":({\"backup\":\"Please select the backup that needs to be restored.\"})}), \"createTemplate\":({\"title\":\"Generate Template\", \"name\":\"Name\", \"description\":\"Description\", \"message\":({\"tip\":\"Please enter a template name!\", \"success\":\"Template { templateName } created successfully.\", \"failed\":\"Failed generated template!\"})}), \"schedule\":({\"title\":\"Create Schedule\", \"message\":({\"tip\":\"Please enter a schedule name!\", \"success\":\"Schedule { name } created successfully.\", \"failed\":\"Failed create schedule!\"})}), \"cloneVM\":({\"title\":\"Clone Virtual Machine\", \"name\":\"New Virtual Machine Name\", \"type\":\"Clone volume data\", \"action\":({\"create\":\"Create\", \"clone\":\"Clone\"}), \"message\":({\"tip\":\"Please enter a virtual machine name!\", \"success\":\"Virtual machine { name } cloned successfully.\", \"failed\":\"Failed clone virtual machine!\"})}), \"osImage\":({\"title\":\"Delete Image\", \"message\":\"Are you sure you want to delete the image { name } ?\"}), \"downloadImage\":({\"title\":\"Download Image\", \"banner\":\"This action takes a while depending on the image size ({ size }). Please be patient.\", \"startMessage\":\"The download process will auto start once the conversion is complete.\", \"download\":\"Download\"}), \"exportImage\":({\"title\":\"Export to Image\", \"name\":\"Name\", \"namespace\":\"Namespace\", \"message\":({\"success\":\"Image { name } created successfully.\"})}), \"storageMigration\":({\"title\":\"Storage Migration\", \"fields\":({\"sourceVolume\":({\"label\":\"Source Volume\", \"placeholder\":\"Select a source volume\"}), \"targetVolume\":({\"label\":\"Target Volume\", \"placeholder\":\"Select a target volume\"})})}), \"dataMigration\":({\"title\":\"Data Migration\", \"fields\":({\"targetVolumeName\":({\"label\":\"Target Volume Name\", \"placeholder\":\"Enter a target volume name\"}), \"targetStorageClassName\":({\"label\":\"Target Storage Class\", \"placeholder\":\"Select a storage class\"})})}), \"migration\":({\"failedMessage\":\"Latest migration failed!\", \"title\":\"Migration\", \"vmMigrationTitle\":\"{count, plural, one {Migrating # VM} other {Migrating # VMs}}\", \"selectedVMs\":\"The following virtual machine(s) will be migrated to the target node\", \"unknownNode\":\"(unknown node)\", \"alreadyOnTarget\":\"Already on Target\", \"fields\":({\"nodeName\":({\"label\":\"Target Node\", \"placeholder\":\"Choose Target Node\"})})}), \"ejectCDROM\":({\"title\":\"Eject CD-ROM\", \"warnTip\":\"Eject volume will restart the virtual machine.\", \"operationTip\":\"Select the volume you want to delete:\", \"delete\":\"Delete\"}), \"bundle\":({\"title\":\"Generate a Support Bundle\", \"titleDescription\":\"Collect system-related logs in Harvester to assist with troubleshooting and support.\", \"tip\":\"Each field below specifies an aspect of the support bundle. For detailed explanations, please refer to the documentation .\", \"url\":\"Issue URL\", \"description\":\"Description\", \"namespaces\":({\"label\":\"Namespaces\", \"tooltip\":\"Select additional namespaces to include in the support bundle. See docs support-bundle-namespaces for detail.\", \"selectAll\":\"Select All\", \"unselectAll\":\"Unselect All\"}), \"timeout\":({\"label\":\"Timeout\", \"tooltip\":\"Minutes allows for completion of the support bundle generation process. See docs support-bundle-timeout for detail.\"}), \"expiration\":({\"label\":\"Expiration\", \"tooltip\":\"Minutes before deleting packaged but not downloaded support bundle. See docs support-bundle-expiration for detail.\"}), \"nodeTimeout\":({\"label\":\"Node Collection Timeout\", \"tooltip\":\"Minutes allowed for collecting logs/configurations on nodes. See docs support-bundle-node-collection-timeout for detail.\"})}), \"hotplugVolume\":({\"success\":\"Volume { diskName } is mounted to the virtual machine { vm }.\", \"title\":\"Add Volume\"}), \"hotplugNic\":({\"success\":\"The settings have been saved, but the network interface {interfaceName} will be attached only after the virtual machine is migrated.\", \"title\":\"Add Network Interface\", \"vmNetwork\":\"Virtual Machine Network\", \"macAddress\":\"MAC Address\", \"macAddressTooltip\":\"If left blank, the MAC address will be automatically generated.\"}), \"insertCdRomVolume\":({\"success\":\"{ imageName } is inserted into device { deviceName }.\", \"title\":\"Insert Image\", \"image\":\"Image\", \"actionLabel\":\"Insert Image\"}), \"cpuMemoryHotplug\":({\"success\":\"CPU and Memory are updated to the virtual machine { vm }.\", \"title\":\"Edit CPU and Memory\", \"maxResourcesMessage\":\"You can increase the CPU to maximum { maxCpu }C and memory to maximum { maxMemory }.\"}), \"snapshot\":({\"title\":\"Take Snapshot\", \"name\":\"Name\", \"message\":({\"success\":\"Take Snapshot { name } successfully.\"})}), \"volumeClone\":({\"title\":\"Clone Volume\", \"name\":\"Name\", \"message\":({\"success\":\"New Volume { name } cloned successfully.\"})}), \"restoreSnapshot\":({\"title\":\"Restore Snapshot\", \"name\":\"New Volume Name\", \"success\":\"New Volume { name } restored successfully.\"}), \"vmSnapshot\":({\"title\":\"Take Virtual Machine Snapshot\", \"name\":\"Name\", \"success\":\"Take virtual machine Snapshot { name } successfully.\", \"fileSystemFreezeDeadline\":({\"label\":\"File System Freeze Deadline\"})}), \"restart\":({\"title\":\"Restart Virtual Machine\", \"tip\":\"Restart the virtual machine for configuration changes to take effect.\", \"cancel\":\"Save\"})}), \"notification\":({\"title\":({\"succeed\":\"Succeed\", \"info\":\"Info\", \"warning\":\"Warning\", \"error\":\"Error\"}), \"restartRequired\":({\"title\":\"{count} {count, plural, =1 {Virtual Machine is} other {Virtual Machines are}} Pending Restart\", \"message\":\"Please restart { vmNames } to apply updated configurations\"})}), \"action\":({\"createVM\":\"Create Virtual Machine\", \"start\":\"Start\", \"restart\":\"Restart\", \"softreboot\":\"Soft Reboot\", \"stop\":\"Stop\", \"pause\":\"Pause\", \"deepClone\":\"Clone\", \"shallowClone\":\"Clone Template\", \"unpause\":\"Unpause\", \"encryptImage\":\"Encrypt Image\", \"decryptImage\":\"Decrypt Image\", \"ejectCDROM\":\"Eject CD-ROM\", \"editVMQuota\":\"Edit Virtual Machine Quota\", \"launchFormTemplate\":\"Launch instance from template\", \"modifyTemplate\":\"Modify template (Create new version)\", \"setDefaultVersion\":\"Set default version\", \"addTemplateVersion\":\"Add template version\", \"backup\":\"Take Backup\", \"createSchedule\":\"Create Schedule\", \"restore\":\"Restore\", \"restoreNewVM\":\"Restore New\", \"resumeSchedule\":\"Resume\", \"suspendSchedule\":\"Suspend\", \"restoreExistingVM\":\"Replace Existing\", \"migrate\":\"Migrate\", \"vmMigrate\":\"Virtual Machine Migration\", \"cpuAndMemoryHotplug\":\"Edit CPU and Memory\", \"abortMigration\":\"Abort Migration\", \"storageMigration\":\"Storage Migration\", \"cancelStorageMigration\":\"Cancel Storage Migration\", \"dataMigration\":\"Data Migration\", \"createTemplate\":\"Generate Template\", \"enableMaintenance\":\"Enable Maintenance Mode\", \"disableMaintenance\":\"Disable Maintenance Mode\", \"enableCPUManager\":\"Enable CPU Manager\", \"disableCPUManager\":\"Disable CPU Manager\", \"cordon\":\"Cordon\", \"uncordon\":\"Uncordon\", \"addHotplugVolume\":\"Add Volume\", \"addHotplugNic\":\"Hotplug Network Interface\", \"exportImage\":\"Export Image\", \"viewlogs\":\"View Logs\", \"cancelExpand\":\"Cancel Expand\", \"snapshot\":\"Take Snapshot\", \"pvcClone\":\"Clone Volume\", \"vmSnapshot\":\"Take Virtual Machine Snapshot\", \"shutdown\":\"Shut Down\", \"powerOn\":\"Power On\", \"reboot\":\"Reboot\", \"reconnect\":\"Reconnect\", \"forceStop\":\"Force Stop\"}), \"formatters\":({\"hardwareResourceGauge\":({\"allocated\":\"Allocated\", \"consumption\":\"{useful} of {total} {units} {suffix}\", \"cores\":\"CPU\", \"pods\":\"Pods\", \"ram\":\"Memory\", \"used\":\"Used\", \"reserved\":\"Reserved\", \"units\":({\"cores\":\"{count, plural,\\n=1 {core}\\nother {cores}}\"})}), \"harvesterIpAddress\":({\"customIpTooltip\":\"Custom IP (set via annotation)\"})}), \"tableHeaders\":({\"hostNetworkConfig\":({\"underlay\":\"Underlay\", \"underlayTooltip\":\"Allow this interface to act as the underlay for VM overlay networks.\", \"vlanID\":\"VLAN ID\", \"mode\":\"Mode\", \"clusterNetwork\":\"Cluster Network\"}), \"imageEncryption\":\"Encryption\", \"size\":\"Size\", \"virtualSize\":\"Virtual Size\", \"progress\":\"Progress\", \"message\":\"Message\", \"phase\":\"Phase\", \"attachedVM\":\"Attached Virtual Machine\", \"cpuManager\":\"CPU Manager\", \"routeConnectivityTooltip\":\"Connectivity between the VM network and the management network, which the Harvester nodes are connected to.\", \"fingerprint\":\"Fingerprint\", \"value\":\"Value\", \"actions\":\"Actions\", \"readyToUse\":\"Ready To Use\", \"backupTarget\":\"Backup Target\", \"targetVm\":\"Target Virtual Machine\", \"cronExpression\":\"Cron Expression\", \"retain\":\"Retain\", \"scheduleType\":\"Type\", \"configuredProfiles\":\"Configured Profiles\", \"maxFailure\":\"Max Failure\", \"sourceVm\":\"Source Virtual Machine\", \"vmSchedule\":\"Virtual Machine Schedule\", \"hostIp\":\"Host IP\", \"vm\":({\"ipAddress\":\"IP Address\", \"node\":\"Node\", \"defaultVersion\":\"Default Version\"}), \"network\":({\"type\":\"Type\", \"vlan\":\"VLAN ID\"}), \"snapshotTargetVolume\":\"Original Volume\", \"volumeSnapshotCounts\":\"Snapshot Counts\", \"networkState\":\"Network State\", \"totalSnapshotQuota\":\"Total Snapshot Quota\", \"storageClass\":\"Storage Class\", \"restore\":\"Restore\", \"vmImportSourceVm\":\"Source VM\", \"vmImportSourceCluster\":\"Source Cluster\", \"vmImportStatus\":\"Import Status\", \"vmImportSourceVDatacenter\":\"Datacenter\", \"vmImportSourceVEndpoint\":\"Endpoint\", \"vmImportSourceVClusterStatus\":\"Cluster Status\", \"vmImportSourceORegion\":\"Region\", \"vmImportSourceOEndpoint\":\"Endpoint\", \"vmImportSourceOClusterStatus\":\"Cluster Status\", \"vmImportSourceOVAUrl\":\"URL\", \"vmImportSourceOVAStatus\":\"Status\", \"v4ip\":\"V4 IP\", \"v6ip\":\"V6 IP\", \"eipName\":\"EIP Name\", \"vmMigrationProviderType\":\"Type\", \"vmMigrationProviderUrl\":\"URL\", \"vmMigrationMapSourceProvider\":\"Source Provider\", \"vmMigrationMapDestProvider\":\"Destination Provider\", \"vmMigrationPlanTargetNs\":\"Target Namespace\", \"vmMigrationPlanVmCount\":\"VM Count\", \"vmMigrationMigrationPlan\":\"Plan\"}), \"tab\":({\"volume\":\"Volumes\", \"network\":\"Networks\", \"advanced\":\"Advanced Options\", \"accessCredentials\":\"Access Credentials\", \"pciDevices\":\"PCI Devices\", \"vGpuDevices\":\"vGPU Devices\", \"usbDevices\":\"USB Devices\", \"vmScheduling\":\"Virtual Machine Scheduling\", \"quotas\":\"Quotas\", \"snapshots\":\"Snapshots\", \"instanceLabel\":\"Instance Labels\", \"annotations\":\"Annotations\", \"filesystem\":\"Filesystem Volume\"}), \"fields\":({\"version\":\"Version\", \"name\":\"Name\", \"type\":\"Type\", \"image\":\"Image\", \"size\":\"Size\", \"volume\":\"Volume\", \"network\":\"Network\", \"model\":\"Model\", \"macAddress\":\"MAC address\", \"staticIp\":\"Static IP\", \"port\":\"Port\", \"protocol\":\"Protocol\", \"remove\":\"Remove\", \"PhysicalNic\":\"Physical NIC\", \"cpu\":\"CPU\", \"memory\":\"Memory\", \"virtualName\":\"Virtual machine name\", \"promiscuous\":\"Promiscuous\", \"ipv4Address\":\"IPv4 address\", \"filterLabels\":\"Filter labels\", \"filterSchedule\":\"Filter schedule\", \"storageClass\":\"Storage class\", \"dockerImage\":\"Docker image\"}), \"pci\":({\"available\":\"Available Devices\", \"compatibleNodes\":\"Compatible Nodes\", \"impossibleSelection\":\"There are no hosts with all of the selected devices.\", \"howToUseDeviceInVMCreation\":({\"prefix\":\"Use the table below to enable PCI passthrough on each device you want to use in this virtual machine. For vGPU devices, please enable them on the\", \"middle\":\"vGPU Devices\", \"suffix\":\"page first.\"}), \"howToUseDevice\":({\"prefix\":\"Select the device in the table to enable PCI passthrough. For vGPU devices, please enable them on the\", \"middle\":\"vGPU Devices\", \"suffix\":\"page.\"}), \"deviceInTheSameHost\":\"You can only select devices on the same host.\", \"showCompatibility\":\"Show device compatibility matrix\", \"hideCompatibility\":\"Hide device compatibility matrix\", \"claimError\":\"Error enabling passthrough on {name}\", \"unclaimError\":\"Error disabling passthrough on {name}\", \"cantUnclaim\":\"You cannot disable passthrough on a device claimed by another user.\", \"detachWarning\":({\"title\":\"Cannot Disable Passthrough\", \"message\":\"Please detach the device from the VM and save it first before disabling passthrough.\"}), \"enableGroup\":\"Enable Group\", \"disableGroup\":\"Disable Group\", \"labelRequired\":\"This rule should not be manually altered: it ensures that the PCI devices selected for this virtual machine are available on the virtual machine's host.\", \"goSetting\":({\"prefix\":\"The pcidevices-controller add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable the add-on to successfully manage your PCI devices.\"}), \"noPCIPermission\":\"Please contact your system administrator to enable the PCI devices first.\", \"enablePassthroughWarning\":\"Please be careful not to use host-owned PCI devices (e.g., management and VLAN NICs). Incorrect device allocation may cause damage to your cluster, including node failure.\", \"disableResourcePooling\":\"Disable Resource Pooling\", \"disableResourcePoolingDescription\":\"Assigns this device a unique resource name so it can be pinned to a specific VM, instead of sharing the pool with other identical devices.\"}), \"devices\":({\"matrixHostName\":\"Host Name\", \"matrixDeviceClaimName\":\"Device Claim Name\"}), \"generic\":({\"close\":\"Close\", \"open\":\"Open\", \"showMore\":\"Show More\", \"hideMore\":\"Hide More\", \"memory\":\"Memory\", \"cpu\":\"CPU\", \"storage\":\"Storage\", \"noFileChosen\":\"No file chosen\", \"noSchema\":\"Can not find the custom resource definition: {schema}.\"}), \"validation\":({\"custom\":({\"tooLongName\":\"\\\"Name\\\" cannot be more than {max} characters.\"}), \"generic\":({\"hasDelete\":\"{type} \\\"{name}\\\" has been deleted.\", \"maxLength\":\"\\\"{key}\\\" cannot be more than {max} characters\", \"tabError\":\"{prefix}: {message}\", \"maximumSize\":\"Exceed maximum size {max}!\", \"regex\":\"Invalid {lowerType} \\\"{name}\\\": {upperType} must match the regex \\\"{regex}\\\"\"}), \"vm\":({\"name\":\"name is required!\", \"memory\":\"\\\"Memory\\\" is required!\", \"duplicatedName\":\"duplicate {type} name: \\\"{name}\\\"\", \"network\":({\"macFormat\":\"Invalid MAC address format.\", \"upperType\":\"Network name\", \"lowerType\":\"network name\"}), \"volume\":({\"upperType\":\"Volume name\", \"lowerType\":\"volume name\", \"needAtLeastOneBootable\":\"At least one bootable volume is required!\"})}), \"image\":({\"ruleTip\":\"The URL you have entered ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw.\", \"ruleFileTip\":\"The file you have chosen ends in an extension that we do not support. We only accept image files that end in .img, .iso, .qcow, .qcow2, .raw.\"}), \"hash\":({\"sha512\":\"Invalid SHA512 checksum.\"}), \"subnet\":({\"excludeIps\":\"Exclude IPs cannot be empty. Please remove or fill in the exclude IPs.\", \"aclEmptyError\":\"The fields in subnet access control list rule can not be empty.\"})}), \"dashboard\":({\"label\":\"Dashboard\", \"header\":\"Harvester Cluster: {cluster}\", \"hardwareResourceGauge\":({\"cpu\":\"CPU\", \"memory\":\"Memory\", \"storage\":\"Storage\", \"allocated\":\"Allocated\"}), \"sections\":({\"events\":({\"label\":\"Events\"}), \"vmMetrics\":({\"label\":\"Virtual Machine Metrics\"})}), \"version\":\"Version\"}), \"host\":({\"console\":\"Console\", \"label\":\"Hosts\", \"inconsistentIP\":\"Host IP is inconsistent, current IP: { currentIP }, initial IP: { initIP }\", \"noConsoleUrl\":\"Console URL not specified\", \"promote\":({\"none\":\" \", \"running\":\"Promoting\", \"failed\":\"Promote failed\", \"unknown\":\"Promote halted\", \"promoteRestart\":\"Restarting\", \"promoteSucceed\":\"Promote completed\"}), \"tabs\":({\"network\":\"Network\", \"overview\":\"Overview\", \"basics\":\"Basics\", \"instance\":\"Virtual Machines\", \"monitor\":\"Monitor Data\", \"storage\":\"Storage\", \"labels\":\"Labels\", \"ksmtuned\":\"Ksmtuned\", \"hugepages\":\"Hugepages\", \"seeder\":\"Out-of-band Access\"}), \"detail\":({\"kvm\":({\"disableMessage\":\"Hardware-based virtualization is disabled or not supported. Hardware-based virtualization must be enabled before creating any virtual machines.\"}), \"title\":({\"network\":\"Network Configuration\"}), \"hostIP\":\"Host IP\", \"role\":\"Role\", \"os\":\"Operating System\", \"create\":\"Creation Time\", \"update\":\"Last Update Time\", \"customName\":\"Custom Name\", \"consoleUrl\":\"Console URL\", \"more\":\"More Information\", \"uuid\":\"UUID\", \"containerRuntime\":\"Container Runtime\", \"kernel\":\"Kernel\", \"management\":\"Management Node\", \"compute\":\"Compute Node\", \"storage\":\"Storage\", \"nic\":\"Physical NIC\", \"notRecommended\":\"Not recommended\", \"networkType\":\"Type\", \"manufacturer\":\"Manufacturer\", \"serialNumber\":\"Serial Number\", \"model\":\"Model\", \"etcd\":\"Witness Node\", \"cpuManager\":\"CPU Manager\"}), \"enableMaintenance\":({\"title\":\"Enable Maintenance Mode\", \"protip\":\"The operation will migrate all virtual machines on this node to other nodes.\", \"shutDownVMs\":\"Check Force option to shutdown virtual machines which cannot be migrated in live mode.\", \"force\":\"Force\"}), \"cordon\":({\"title\":\"Cordon\", \"protip\":\"This operation will mark the node { node } as unschedulable.\"}), \"ksmtuned\":({\"run\":\"Run Strategy\", \"configure\":\"Configure\", \"mode\":\"Mode\", \"modeLink\":\"Mode \", \"thresCoef\":\"Threshold Coefficient\", \"enableMergeNodes\":\"Enable merging across nodes\", \"enable\":\"Enable\", \"disable\":\"Disable\", \"ksmStatus\":\"KSM Status\", \"modeOption\":({\"standard\":\"Standard\", \"high\":\"High-performance\", \"customized\":\"Customized\"}), \"parameters\":({\"title\":\"Ksmtuned Parameters\", \"boost\":\"Boost\", \"decay\":\"Decay\", \"sleepMsec\":\"Sleep Time (Millisecond)\", \"minPages\":\"Minimum Pages\", \"maxPages\":\"Maximum Pages\", \"description\":({\"boost\":\"The number of scanned pages is incremented each time if the available memory is less than the threshold coefficient.\", \"decay\":\"The number of scanned pages is decremented each time if the available memory is greater than the threshold coefficient.\", \"sleepMsec\":\"The interval between two scans (the minimum value is 10ms), which is calculated by the formula (Sleep Milliseconds * 16 * 1024 * 1024/Total Memory).\", \"minPages\":\"The minimum number of pages per scan, also the configuration for the first run.\", \"maxPages\":\"Maximum number of pages per scan.\"})}), \"statistics\":({\"title\":\"Statistics \", \"sharing\":\"Sharing\", \"shared\":\"Shared\", \"unshared\":\"Unshared\", \"volatile\":\"Volatile\", \"fullScans\":\"Full Scans\", \"stableNodeChains\":\"Stable Node Chains\", \"stableNodeDups\":\"Stable Node Dups\"})}), \"hugepages\":({\"meminfo\":\"Meminfo\", \"transparent\":({\"title\":\"Transparent Hugepages \", \"enabled\":\"Enabled\", \"shmemEnabled\":\"Shared Memory Enabled\", \"defrag\":\"Defragmentation\"}), \"status\":({\"anon\":\"Anonymous Hugepages (bytes)\", \"size\":\"Default Hugepage Size (bytes)\", \"total\":\"Total Hugepages\", \"free\":\"Free Hugepages\", \"rsvd\":\"Reserved Hugepages\", \"surp\":\"Surplus Hugepages\"})}), \"disk\":({\"add\":\"Add Disk\", \"path\":({\"label\":\"Path\"}), \"storageReserved\":({\"label\":\"Storage Reserved\"}), \"allowScheduling\":({\"label\":\"Scheduling\", \"tooltip\":\"Disk {name} ({path}) scheduling is disabled\"}), \"evictionRequested\":({\"label\":\"Eviction Requested\"}), \"forceFormatted\":({\"label\":\"Force Formatted\", \"toolTip\":\"Force formatted will clean up disk data, make sure you backup all available data to prevent data loss.\", \"yes\":\"Yes (Ext4 File System)\"}), \"description\":({\"label\":\"Description\"}), \"lastFormattedAt\":({\"info\":\"The disk has already been force-formatted.\"}), \"notification\":({\"success\":\"Update host \\\"{name}\\\" storage configurations successfully.\"}), \"error\":\"Host has unready or unschedulable disks.\", \"mounted\":\"Already Mounted\", \"fileSystem\":({\"info\":\"Current file system is {system}, You can format it manually.\", \"formatting\":\"Disk is formatting, please wait.\"}), \"tags\":({\"label\":\"Disk Tags\", \"addLabel\":\"Add Disk Tag\"}), \"conditions\":\"Conditions\", \"storageAvailable\":({\"label\":\"Storage Available\"}), \"storageScheduled\":({\"label\":\"Storage Scheduled\"}), \"storageMaximum\":({\"label\":\"Storage Maximum\"}), \"provisioner\":\"Provisioner\", \"lvmVolumeGroup\":({\"label\":\"Volume Group\", \"create\":\"Create New...\"}), \"storage\":({\"longhorn\":({\"LonghornV1\":({\"label\":\"Longhorn V1 (CSI)\"}), \"LonghornV2\":({\"label\":\"Longhorn V2 (CSI)\"})}), \"lvm\":({\"label\":\"LVM\"})})}), \"tags\":({\"label\":\"Host Tags\", \"addLabel\":\"Add Host Tag\"}), \"powerAction\":({\"message\":({\"success\":\"Perform host { name } { operation } successfully.\"})}), \"ntp\":({\"label\":\"NTP Server Addresses\", \"tips\":\"You can configure multiple IPv4 addresses or host addresses.\", \"placeholder\":\"e.g. IPv4\", \"ntpSyncStatus\":({\"isDisabled\":\"NTP is disabled. Please check the NTP service is active.\", \"isUnsynced\":\"NTP is not synchronized with the NTP server {current}.\"})})}), \"virtualMachine\":({\"label\":\"Virtual Machines\", \"osType\":\"OS Type\", \"cpuModel\":({\"label\":\"CPU Model\", \"fetchError\":\"Failed to load CPU model configuration: {error}\", \"optionLabel\":\"{modelName} ({count} {count, plural, one {node} other {nodes}})\"}), \"hotplug\":({\"title\":\"Enable CPU and memory hotplug\", \"tooltip\":\"The default maximum CPU and maximum memory are {hotPlugTimes} times based on CPU and memory.\", \"restartVMMessage\":\"Restart action is required for the virtual machine configuration change to take effect\"}), \"hotUnplug\":({\"actionLabel\":\"Detach\", \"detachVolume\":({\"title\":\"Are you sure that you want to detach volume {name}?\", \"actionLabel\":\"Detach Volume\", \"success\":\"Volume { name } is detached successfully.\"}), \"ejectCdRomVolume\":({\"title\":\"Are you sure that you want to eject image from device {name}?\", \"actionLabel\":\"Eject Image\", \"success\":\"Image from device { name } is ejected successfully.\"}), \"detachNIC\":({\"title\":\"Are you sure that you want to detach network interface {name}?\", \"actionLabel\":\"Detach Network Interface\", \"success\":\"The settings have been saved, but the network interface {name} will be detached only after the virtual machine is migrated.\"})}), \"instance\":({\"singleInstance\":null, \"multipleInstance\":null, \"single\":({\"label\":\"Single Instance\", \"nameLabel\":\"Name\", \"host\":({\"label\":\"Hostname\", \"placeholder\":\"Default to the virtual machine name.\"})}), \"multiple\":({\"label\":\"Multiple Instance\", \"nameNsDescription\":\"Name prefix for each instance\", \"count\":\"Count\", \"countTip\":\"Count should be between 1 and 10\", \"nameLabel\":\"Name Prefix\", \"host\":({\"label\":\"Host Prefix Name\", \"placeholder\":\"Default to the virtual machine name.\"})})}), \"useTemplate\":({\"label\":\"Use the virtual machine template:\", \"template\":({\"label\":\"Template\"}), \"version\":({\"label\":\"Version\"})}), \"console\":({\"novnc\":\"Open in WebVNC\", \"serial\":\"Open in Serial Console\"}), \"promptRemove\":({\"title\":\"Select the volume you want to delete:\", \"deleteAll\":\"Delete All\", \"tips\":\"Warn: The snapshots of the virtual machine will be deleted with virtual machine and the snapshots of volume will be deleted with volume.\"}), \"restartTip\":\"{restart, select,\\n true {Restart}\\n other {Start}\\n} the virtual machine now to take effect of the configuration changes.\", \"runStrategy\":\"Run Strategy\", \"maintenanceStrategy\":({\"label\":\"Maintenance Strategy\", \"options\":({\"Migrate\":\"Migrate\", \"ShutdownAndRestartAfterEnable\":\"Shutdown and Restart After Enable\", \"ShutdownAndRestartAfterDisable\":\"Shutdown and Restart After Disable\", \"Shutdown\":\"Shutdown\"})}), \"cpuPinning\":({\"label\":\"Enable CPU Pinning\", \"tooltip\":\"Enable CPU Pinning brings better performance and reduce latency for the virtual machine\", \"restartVMMessage\":\"Changing the CPU Pinning setting requires a virtual machine reboot for the change to take effect\", \"migrationMessage\":\"This virtual machine can only be migrated to a target node that has CPU Manager enabled, as CPU Pinning is configured.\"}), \"restartNow\":\"{restart, select,\\n true {Restart}\\n other {Start}\\n} Now\", \"createSSHKey\":\"Create a New...\", \"genericLoginError\":\"Authentication failed. Please re-log in and try again.\", \"installAgent\":\"Install guest agent\", \"enableUsb\":\"Enable USB Tablet\", \"advancedOptions\":({\"tpm\":\"Enable TPM\", \"tpmPersistentState\":\"TPM Persistent State\", \"cpuManager\":({\"prefix\":\"You must enable CPU Manager for at least one node in\", \"middle\":\"host page\", \"suffix\":\"to enable CPU Pinning for VM\"}), \"efiEnabled\":\"Booting in EFI mode\", \"efiPersistentState\":\"EFI Persistent State\", \"secureBoot\":\"Secure Boot\"}), \"usbTip\":\"Provides an absolute pointer device which often helps with getting a consistent mouse cursor position in VNC.\", \"sshTitle\":\"Add Public SSH Key\", \"imageTip\":\"An external URL to the .iso, .img, .qcow2 or .raw that the virtual machine should be created from.\", \"volume\":({\"dragTip\":\"Drag and drop volumes, or use the volume's arrows, to change the boot order.\", \"volumeTip\":\"The virtual machine only contains a CD-ROM volume. You may want to add additional disk volumes.\", \"macTip\":\"MAC address as seen inside the guest system.\", \"staticIpTip\":\"Static IP that will be stored to annotation static-ip.harvesterhci.io/{nic_name}.\", \"volumeUpdate\":\"Set volume { name } successfully\", \"type\":\"Type\", \"size\":\"Size\", \"edit\":\"Edit\", \"bus\":\"Bus\", \"readyToUse\":\"Ready To Use\", \"bootOrder\":\"Boot Order\", \"volume\":\"Volume\", \"dockerImage\":\"Docker Image\", \"addVolume\":\"Add Volume\", \"addExistingVolume\":\"Add Existing Volume\", \"addVmImage\":\"Add a Virtual Machine Image\", \"addContainer\":\"Add Container\", \"setFirst\":\"Set as root volume\", \"saveVolume\":\"Update Volume\", \"encryption\":\"Encryption\", \"vmImageVolumeTip\":\"Disk size ({diskSize}) should greater than selected image virtual size ({imageVirtualSize})\", \"lockTooltip\":({\"all\":\"All volumes are encrypted.\", \"partial\":\"Some volumes are encrypted.\"}), \"title\":({\"vmImage\":\"Image Volume\", \"existingVolume\":\"Existing Volume\", \"volume\":\"Volume\", \"container\":\"Container\"}), \"unmount\":({\"title\":\"Are you sure?\", \"message\":\"Are you sure you want to unmount this volume?\"}), \"emptyImage\":\"No media\"}), \"network\":({\"title\":\"Network\", \"addNetwork\":\"Add Network\", \"addPort\":\"Add Port\"}), \"cloudConfig\":({\"title\":\"Cloud Configuration\", \"createTemplateTitle\":\"Create {name}\", \"createNew\":\"Create new...\", \"cloudInit\":({\"label\":\"Cloud Init\", \"placeholder\":\"Select a template\"}), \"user\":({\"label\":\"User Data Template\", \"title\":\"User Data:\", \"tip\":\"You can specify user data to configure an instance or run a configuration script during launch. If you launch more than one instance at a time, the user data is available to all the instances in that reservation. Learn more \"}), \"network\":({\"label\":\"Network Data Template\", \"title\":\"Network Data:\", \"tip\":\"The network-data configuration allows you to customize the instance's networking interfaces by assigning subnet configuration, virtual device creation (bonds, bridges, VLANs) routes and DNS configuration. Learn more \"})}), \"sysprep\":({\"title\":\"Windows Sysprep Configuration\", \"description\":\"Configure Windows automated installation using autounattend.xml. The configuration will be stored in a Kubernetes Secret and mounted as a CD-ROM during installation. Learn more \", \"createNew\":\"Create new...\", \"createNewTitle\":\"Create Windows Sysprep Template\", \"xmlContent\":\"autounattend.xml content\", \"secret\":({\"label\":\"Windows Sysprep Template\"}), \"validation\":({\"invalidXml\":\"Invalid XML syntax\", \"invalidNamespace\":\"Invalid unattend.xml namespace. Expected 'urn:schemas-microsoft-com:unattend'\"})}), \"scheduling\":({\"affinity\":({\"anyNode\":\"Run virtual machine on any available node\", \"schedulingRules\":\"Run virtual machine on node(s) matching scheduling rules\", \"specificNode\":\"Run virtual machine on specific node - (Live migration is not supported)\"}), \"networkNotSupport\":\"Network not support schedule\"}), \"accessCredentials\":({\"resetPwd\":({\"label\":\"Add Basic Auth\"}), \"injectSSH\":({\"label\":\"Add SSH Key\", \"users\":\"Select Users\", \"addUser\":\"Add User\"}), \"tips\":\"qemu-guest-agent must be installed to enable the accessing of credentials. The virtual machine needs to be restarted after credentials added. You need to be in the virtual machine to edit your password or remove an SSH-Key after deleting the credentials.\", \"userTips\":\"The user to be added must already exist; otherwise, the credentials will not take effect.\", \"duplicatedUser\":\"User already exists.\", \"invalidUser\":\"Invalid Username.\"}), \"input\":({\"name\":\"Name\", \"cpu\":\"CPU\", \"maxCpu\":\"Maximum CPU\", \"maxMemory\":\"Maximum Memory\", \"memory\":\"Memory\", \"image\":\"Image\", \"sshKey\":\"SSHKey\", \"sshKeyValue\":\"SSH-Key\", \"MachineType\":\"Machine Type\", \"username\":\"Username\", \"password\":\"Password\", \"reservedMemory\":\"Reserved Memory\", \"customizeDisplayName\":\"Customize virtual machine display name\", \"displayNamePlaceholder\":\"Virtual machine alias name\", \"displayName\":\"Display Name\"}), \"filesystem\":({\"description\":\"Harvester supports filesystem volumes for VM via virtiofs.\", \"type\":\"Filesystem Type\", \"volume\":\"Volume\", \"resource\":\"Resource\", \"add\":\"Add\", \"mountBannerHint\":\"Please update the mount path (e.g. /mnt/appconfigfs) to your preferred location, then add the corresponding commands to the\", \"mountBannerHintLink\":\"runcmd\", \"mountBannerHintSuffix\":\"in Advanced tab User Data.\"}), \"machineTypeTip\":\"Specify a processor architecture to emulate. To see a list of supported architectures, run: qemu-system-x86_64 -cpu ?\", \"detail\":({\"tabs\":({\"overview\":\"Overview\", \"details\":\"Details\", \"environment\":\"Environment\", \"events\":\"Events\", \"migration\":\"Migration\", \"console\":\"Console\", \"networkInterfaces\":\"Network Interfaces\", \"disks\":\"Disks\", \"networks\":\"Networks\", \"basics\":\"Basics\", \"configurations\":\"Configurations\", \"inventory\":\"Inventory\", \"hostBasic\":\"Basic Attributes\", \"instance\":\"Virtual Machines\", \"monitor\":\"Monitor Data\", \"keypairs\":\"SSH Keys\", \"cloudConfig\":\"Cloud Configuration\", \"metrics\":\"Virtual Machine Metrics\"}), \"details\":({\"title\":({\"vmDetails\":\"Virtual Machine Details\", \"requirements\":\"Scheduling and resources requirements\", \"services\":\"Services\", \"users\":\"Logged in users\"}), \"name\":\"Name\", \"totalSnapshotQuota\":\"Total Snapshot Quota\", \"namespace\":\"Namespace\", \"created\":\"Created\", \"hostname\":\"Hostname\", \"node\":\"Node\", \"ipAddress\":\"IP Address\", \"status\":\"Status\", \"pod\":\"Pod\", \"labels\":\"Labels\", \"bootOrder\":\"Boot Order\", \"annotations\":\"Annotations\", \"CDROMs\":\"CD-ROMs\", \"description\":\"Description\", \"operatingSystem\":\"Operating System\", \"template\":\"Template\", \"kernelRelease\":\"Kernel Release\", \"owner\":\"Owner\", \"workloadProfile\":\"Workload Profile\", \"nodeSelector\":\"Node Selector\", \"flavor\":\"Flavor\", \"tolerations\":\"Tolerations\", \"dedicatedResources\":\"Dedicated Resources\", \"down\":\"Virtual machine not running\", \"affinityRules\":\"Affinity Rules\", \"phase\":\"Phase\", \"sourceNode\":\"Source Node\", \"targetNode\":\"Target Node\", \"started\":\"Started\", \"ended\":\"Ended\"}), \"notAvailable\":\"Not available\", \"GuestAgentNotInstalled\":\"Guest agent required\", \"noOwner\":\"No Owner\", \"events\":({\"from\":\"Generated from\", \"down\":\"No events in the past hour\"}), \"console\":({\"down\":\"This virtual machine is down. Please start it to access its console.\", \"shortcutKeys\":\"Shortcut Keys\", \"customShortcutKeys\":\"Custom Shortcut Keys\", \"management\":\"Management Shortcut Keys\", \"record\":({\"start\":\"Record\", \"recording\":\"Recording\", \"stop\":\"Stop Recording\", \"tips\":\"Press the record button to capture your keyboard inputs.\", \"send\":\"Send\", \"preferredKeys\":\"Preferred Custom Shortcut Keys\"})})}), \"terminationGracePeriodSeconds\":({\"label\":\"Termination Grace Period\"}), \"affinity\":({\"addLabel\":\"Add Workload Selector\", \"topologyKey\":({\"placeholder\":\"topology.kubernetes.io/zone\"}), \"thisPodNamespace\":\"This virtual machine's namespace\", \"matchExpressions\":({\"inNamespaces\":\"Workloads in these namespaces\"}), \"namespaces\":({\"label\":\"Namespaces\"})}), \"instanceLabels\":({\"banner\":\"These labels are automatically synchronized to the virtual machine instance.\"}), \"labels\":({\"banner\":\"These key values are added as labels to the virtual machine.\"}), \"annotations\":({\"banner\":\"These key values are added as annotations to the virtual machine.\"})}), \"volume\":({\"label\":\"Volumes\", \"tabs\":({\"basics\":\"Basics\", \"snapshots\":\"Snapshots\", \"datasource\":\"Data Source\", \"details\":\"Details\", \"conditions\":\"Conditions\"}), \"size\":\"Size\", \"volumeMode\":\"Volume Mode\", \"accessModes\":\"Access Modes\", \"createWithDataVolume\":\"Create with DataVolume\", \"createWithDataVolumeTooltip\":\"Create Volume with Kubevirt/Containerized Data Importer way. It can fill accessMode/volumeMode automatically.\", \"showAdvanced\":\"Show Advanced Options\", \"hideAdvanced\":\"Hide Advanced Options\", \"source\":\"Source\", \"kind\":\"Kind\", \"sourceOptions\":({\"new\":\"New\", \"vmImage\":\"Virtual Machine Image\"}), \"image\":\"Image\", \"frontend\":\"Frontend\", \"blockdev\":\"Block Device\", \"attachedNode\":\"Attached Node\", \"endpoint\":\"Endpoint\", \"diskTags\":\"Disk Tags\", \"nodeTags\":\"Node Tags\", \"lastBackup\":\"Last Backup\", \"lastBackupAt\":\"Last Backup At\", \"replicasNumber\":\"Replicas Number\", \"promptRemove\":({\"tips\":\"Warn: The volume's snapshots will be deleted with this volume.\"}), \"externalLink\":({\"tips\":\"Check volume details\"}), \"rebuildingMessage\":\"Rebuilding: {percentage}%\", \"longhorn\":({\"disableResize\":\"Longhorn V2 volumes cannot be resized.\"})}), \"image\":({\"label\":\"Images\", \"tabs\":({\"basics\":\"Basics\"}), \"url\":\"URL\", \"size\":\"Size\", \"isEncryption\":\"Encryption\", \"encryptionSecret\":\"Encryption Secret\", \"virtualSize\":\"Virtual Size\", \"urlTip\":\"Supports the raw and qcow2 image formats which are supported by qemu . Bootable ISO images can also be used and are treated like raw images.\", \"fileName\":\"File Name\", \"uploadFile\":\"Upload File\", \"source\":\"Source Type\", \"sourceType\":({\"download\":\"URL\", \"upload\":\"File\", \"clone\":\"Clone\", \"encrypt\":\"Encrypt\", \"decrypt\":\"Decrypt\"}), \"sourceImage\":\"Source Image\", \"cryptoOperation\":\"Crypto Operation\", \"warning\":({\"uploading\":\"{count, plural,\\n=1 {1 image is uploading, please do not refresh or close the page.}\\nother {{count} images are uploading, please do not refresh or close the page.}\\n}\", \"osUpgrade\":({\"uploading\":\"{name} is uploading, please do not refresh or close the page.\"})}), \"checksum\":\"Checksum\", \"checksumTip\":\"Validate the image using the SHA512 checksum, if specified.\", \"tooltip\":({\"imported\":\"Created automatically by the vm-import-controller\"}), \"errors\":({\"unsupportedBackend\":\"Unsupported backend type: {backend}\"})}), \"vmTemplate\":({\"label\":\"Templates\", \"tabs\":({\"basics\":\"Basics\"}), \"nameNsDescription\":({\"name\":\"Template Name\"}), \"tips\":({\"notExistImage\":({\"title\":\"Image {name} does not exist!\", \"message\":\"Please select a new image.\"}), \"notExistNode\":({\"title\":\"Node {name} does not exist!\", \"message\":\"Please select a new node.\"})})}), \"upgradePage\":({\"upgradeApp\":\"Upgrade Software\", \"upgrade\":\"Upgrade\", \"upgradeTip\":\"Please select the version you want to upgrade to\", \"currentVersion\":\"CURRENT VERSION\", \"versionLabel\":\"AVAILABLE COMPATIBLE VERSIONS\", \"enableLogging\":\"Enable Logging\", \"skipSingleReplicaDetachedVol\":\"Skip checking single-replica detached volumes\", \"upgradeNode\":\"Upgrading Node\", \"upgradeSysService\":\"Upgrading System Service\", \"upgradeImage\":\"Download Upgrade Image\", \"osUpgrade\":\"Cluster Upgrade\", \"uploadNew\":\"Upload New Image\", \"deleteHeader\":\"Please select an image to delete.\", \"deleteExisting\":\"Delete Existing Image\", \"selectExisting\":\"Select Existing Image\", \"createRepository\":\"Creating Upgrade Repository\", \"succeeded\":\"Succeeded\", \"releaseTip\":\"Please read the upgrade documentation carefully. You can view details on the Harvester Release Notes .\", \"checkReady\":\"I have read and understood the upgrade instructions related to this Harvester version.\", \"pending\":\"Pending\", \"upload\":({\"duplicatedFile\":\"The file you are trying to upload already exists.\"}), \"repoInfo\":({\"upgradeStatus\":\"Upgrade Status\", \"os\":\"OS\", \"kubernetes\":\"Kubernetes\", \"monitoringChart\":\"Monitoring Chart\", \"harvesterChart\":\"Harvester Chart\", \"success\":\"Success\", \"fail\":\"Fail\", \"ongoing\":\"On-going\", \"downloadLog\":\"Download Log\", \"logStatus\":\"Log Download Status\"}), \"dismissMessage\":\"Dismiss it\", \"upgradeAvailable\":\"Upgrade Available\", \"upgradeUnavailable\":\"Upgrade Unavailable\", \"upgradeInfo\":({\"warning\":\"WARNING\", \"doc\":\"Read the documentation before starting the upgrade process. Ensure that you complete procedures that are relevant to your environment and the version you are upgrading to.\", \"tip\":\"Unmet system requirements and incorrectly performed procedures may cause complete upgrade failure and other issues that require manual workarounds.\", \"moreNotes\":\"For more details about the release notes, please visit -\"})}), \"schedule\":({\"label\":\"Virtual Machine Schedules\", \"createTitle\":\"Create Schedule\", \"createButtonText\":\"Create Schedule\", \"scheduleType\":\"Virtual Machine Schedule Type\", \"cron\":({\"label\":\"Cron Schedule\", \"editButton\":\"Edit\"}), \"detail\":({\"namespace\":\"Namespace\", \"sourceVM\":\"Source Virtual Machine\"}), \"tabs\":({\"basic\":\"Basic\", \"backups\":\"Backups\", \"snapshots\":\"Snapshots\"}), \"message\":({\"noSetting\":({\"suffix\":\"before creating a backup schedule\"})}), \"retain\":({\"label\":\"Retain\", \"count\":\"Count\", \"tooltip\":\"Number of up-to-date VM backups to retain. Maximum to 250, minimum to 2.\"}), \"maxFailure\":({\"label\":\"Max Failure\", \"count\":\"Count\", \"tooltip\":\"Max number of consecutive failed backups that could be tolerated. If reach this threshold, Harvester controller will suspend the schedule job. This value should less than retain count\"}), \"virtualMachine\":({\"title\":\"Virtual Machine Name\", \"placeholder\":\"Select a virtual machine\"}), \"type\":({\"snapshot\":\"Snapshot\", \"backup\":\"Backup\"})}), \"backup\":({\"label\":\"Virtual Machine Backups\", \"createText\":\"Restore Backup\", \"title\":\"Restore Virtual Machine\", \"refreshInterval\":({\"label\":\"Refresh Interval\", \"tip\":\"The interval for the backup target to sync data to harvester cluster. Set to 0 to disable refresh mechanism.\"}), \"backupTargetTip\":\"The endpoint used to access the backupstore. NFS and S3 are supported.\", \"message\":({\"noSetting\":({\"prefix\":\"You must configure the backup target\", \"middle\":\"setting\", \"suffix\":\"before creating a new backup.\"}), \"errorTip\":({\"prefix\":\"Backup target value in\", \"middle\":\"setting\", \"suffix\":\"is invalid, error: \"}), \"viewSetting\":({\"prefix\":\"Click\", \"middle\":\"here\", \"suffix\":\"to view the backup configuration.\"}), \"testConnect\":({\"actionLabel\":\"Test connection\", \"waitingLabel\":\"Testing connection...\", \"successLabel\":\"Connection tested\", \"successMessage\":\"Harvester can successfully connect to the endpoint {endpoint}\"})}), \"restore\":({\"backup\":\"Backup\", \"deletePreviousVolumes\":\"Delete Previous Volumes\", \"createNew\":\"Create new\", \"replaceExisting\":\"Replace existing\", \"virtualMachineName\":\"Virtual Machine Name\", \"keepMacAddress\":\"Keep MAC Address\", \"haltAfterRestore\":\"Keep powered off after restore\"}), \"matchTarget\":\"The current backup target does not match the existing one.\", \"progress\":({\"details\":\"Volume details\", \"tooltip\":({\"starting\":\"Backup initiating\", \"progress\":\"Backup in progress\", \"complete\":\"Backup completed\"})})}), \"restore\":({\"progress\":({\"details\":\"Volume details\", \"tooltip\":({\"starting\":\"Restore initiating\", \"progress\":\"Restore in progress\", \"complete\":\"Restore completed\"})})}), \"subnet\":({\"cidrBlock\":({\"tooltip\":\"The subnet range in CIDR notation. Note that the CIDR blocks of different Subnets' within the same VPC cannot overlap.\", \"label\":\"CIDR Block\", \"placeholder\":\"e.g. 172.20.0.0/16\"}), \"protocol\":({\"label\":\"Protocol\"}), \"provider\":({\"tooltip\":\"Network provider for this Subnet. Must be one of the Virtual Machine Networks in OverlayNetwork type.\", \"label\":\"Provider\"}), \"vpc\":({\"label\":\"Virtual Private Cloud\"}), \"gateway\":({\"label\":\"Gateway IP\", \"placeholder\":\"e.g. 172.20.0.1\"}), \"vlan\":({\"label\":\"VLAN\", \"placeholder\":\"Select a VLAN\"}), \"dhcp\":({\"label\":\"Dynamic Host Configuration Protocol (DHCP)\", \"v4Options\":\"DHCPV4Options\", \"v6Options\":\"DHCPV6Options\", \"placeholder\":\"key1=value1, key2=value2\", \"dhcpOptionBanner\":\"DHCP options is a key/value string concatenate with comma. For more detail, please refer to KubOVN document \", \"tooltip\":\"Enable DHCP server for this subnet. When enabled, VMs can automatically obtain IP addresses from this subnet.\"}), \"externalConnectivity\":({\"label\":\"NAT Outgoing\", \"tooltip\":\"Enable NAT for VMs using this subnet to access external networks.\"}), \"private\":({\"label\":\"Private Subnet\", \"tooltip\":\"Enable network isolation for this Subnet. When enabled, VMs can only communicate within this subnet, even if other subnets exist under the same VPC.\"}), \"allowSubnet\":({\"label\":\"Allow Subnets\", \"tooltip\":\"You can specify certain subnets which can communicate with this subnet.\", \"addSubnet\":\"Add Allow Subnet\", \"placeholder\":\"e.g. 172.16.0.0/16\"}), \"excludeIPs\":({\"tooltip\":\"The IP address list to reserve from automatic assignment. The gateway IP address is always excluded and will be automatically added to the list.\", \"placeholder\":\"single IP or 192.168.0.100..192.168.0.200\"}), \"acl\":({\"label\":\"Access Control List\", \"tooltip\":\"The ACL to apply to this Subnet. Must be one of the ACLs in the same namespace.\", \"action\":({\"label\":\"Action\", \"placeholder\":\"Please select an action\"}), \"direction\":({\"label\":\"Direction\", \"placeholder\":\"Please select a direction\"}), \"addRule\":\"Add Rule\", \"priority\":({\"label\":\"Priority\", \"placeholder\":\"Please select a priority\"}), \"match\":({\"label\":\"Match\", \"placeholder\":\"e.g. ip4.dst == 10.10.0.2\"}), \"banner\":\"The supported field in ACL match can refer to KubeOvn Subnet ACL document \"})}), \"vpc\":({\"viewTopology\":\"Topology\", \"topology\":({\"loading\":\"Loading topology...\", \"empty\":\"No resources found\", \"visibility\":({\"vpc\":\"VPC\", \"subnets\":\"Subnets\", \"overlayNetworks\":\"Overlay Networks\", \"vms\":\"VMs\"}), \"labels\":({\"cidr\":\"CIDR\", \"provider\":\"Provider\", \"type\":\"Type\", \"clusterNetwork\":\"Cluster Network\", \"network\":\"Network\", \"subnet\":\"Subnet\", \"ip\":\"IP\", \"mac\":\"MAC\", \"peering\":\"Peering\"})}), \"noAddonEnabled\":({\"prefix\":\"The kubeovn-operator add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable the add-on to successfully create VPC and subnet.\"}), \"label\":\"Virtual Private Cloud\", \"noChild\":\"There is no subnet defined in this Virtual Private Cloud.\", \"createSubnet\":\"Create Subnet\", \"staticRoutes\":({\"label\":\"Static Routes\", \"cidr\":({\"label\":\"CIDR\", \"placeholder\":\"e.g. 172.16.0.0/16\"}), \"nextHopIP\":({\"tooltip\":\"The localConnectIP on the other end of the peering VPC.\", \"label\":\"Next Hop IP\", \"placeholder\":\"e.g. 169.254.0.2\"})}), \"vpcPeerings\":({\"label\":\"VPC Peerings\", \"localConnectIP\":({\"tooltip\":\"The designated IP address in CIDR notation of the VPC peering endpoint. Note that both IP addresses (for the VPC and the other VPC) should belong to the same subnet range and should not conflict with the cidrBlock in any existing subnets.\", \"label\":\"Local Connect IP\", \"placeholder\":\"e.g. 169.254.0.1/16\"}), \"remoteVpc\":({\"label\":\"Remote VPC\"}), \"infoBanner\":\"The static route destination CIDR must cover all subnets CIDR from remote VPC Peer. Read VPC Peering Configuration Examples for more information.\"})}), \"natGateway\":({\"label\":\"Gateways\", \"internalTenantNetwork\":({\"label\":\"Internal Tenant Network\", \"placeholder\":\"Select a Virtual Machine Network\"}), \"vpc\":({\"label\":\"VPC\", \"placeholder\":\"Select a VPC\"}), \"subnet\":({\"label\":\"Subnet\", \"placeholder\":\"Select a subnet\"}), \"lanIp\":({\"label\":\"LAN IP\", \"placeholder\":\"Enter LAN IP\"}), \"externalSubnets\":({\"label\":\"External Subnets\", \"addLabel\":\"Add\", \"placeholder\":\"Select a subnet\"})}), \"externalIP\":({\"label\":\"External IPs\", \"natGateway\":({\"label\":\"VpcNatGateway\", \"placeholder\":\"Select a VpcNatGateway\"}), \"externalSubnet\":({\"label\":\"External Subnet\", \"placeholder\":\"Select an external subnet\"}), \"v4ip\":({\"label\":\"V4 IP\", \"placeholder\":\"public ip from external subnet\"})}), \"snat\":({\"label\":\"Source Rules\", \"eip\":({\"label\":\"EIP\", \"placeholder\":\"Select an external IP\"}), \"internalCIDR\":({\"label\":\"Internal CIDR\", \"placeholder\":\"internal subnet CIDR\"})}), \"dnat\":({\"label\":\"Destination Rules\", \"eip\":({\"label\":\"EIP\", \"placeholder\":\"Select an external IP\"}), \"externalPort\":({\"label\":\"External Port\", \"placeholder\":\"port number\"}), \"internalIp\":({\"label\":\"Internal IP\", \"placeholder\":\"internal IP address\"}), \"internalPort\":({\"label\":\"Internal Port\", \"placeholder\":\"port number\"}), \"protocol\":({\"label\":\"Protocol\", \"placeholder\":\"Select protocol (tcp or udp)\"})}), \"providerNetwork\":({\"label\":\"Provider Networks\", \"defaultInterface\":({\"label\":\"Default Interface\", \"placeholder\":\"Select the interface the same as master interface of external overlay network\"}), \"customInterfaces\":({\"label\":\"Custom Interfaces\", \"addLabel\":\"Add Custom Interface\", \"interface\":({\"label\":\"Network Interface\", \"placeholder\":\"e.g. eth2\"}), \"nodes\":({\"label\":\"Nodes\", \"addLabel\":\"Add Node\", \"placeholder\":\"Select a node\"})}), \"excludedNodes\":({\"label\":\"Excluded Nodes\", \"addLabel\":\"Add Excluded Node\", \"placeholder\":\"Select node to exclude from this provider network\"})}), \"vlanNetwork\":({\"label\":\"VLANs\"}), \"vlan\":({\"id\":({\"label\":\"VLAN ID\", \"placeholder\":\"e.g. 1-4094\"}), \"provider\":({\"label\":\"Provider Network\", \"placeholder\":\"Select a provider network\"})}), \"networkPolicy\":({\"label\":\"Policies\", \"banner\":\"The network policies must be used for VMs attached to overlay networks. Please read the harvester document how the network policy works.\"}), \"network\":({\"label\":\"Virtual Machine Networks\", \"tabs\":({\"basics\":\"Basics\", \"layer3Network\":\"Route\", \"nic\":\"Network Interface Card\"}), \"clusterNetwork\":({\"label\":\"Cluster Network\", \"create\":\"Create a new cluster network\", \"toolTip\":\"Define your custom cluster scope network name\", \"createPlaceholder\":\"Input a new cluster network name\", \"selectOrCreatePlaceholder\":\"Select or create a new cluster network\", \"selectPlaceholder\":\"Select a cluster network\"}), \"layer3Network\":({\"mode\":({\"label\":\"Mode\", \"auto\":\"Auto (DHCP)\", \"manual\":\"Manual\"}), \"serverIPAddr\":({\"label\":\"DHCP Server IP\"}), \"gateway\":({\"label\":\"Gateway\", \"placeholder\":\"e.g. 172.16.0.1\"}), \"cidr\":({\"label\":\"CIDR\", \"placeholder\":\"e.g. 172.16.0.1/24\"})})}), \"sshKey\":({\"label\":\"SSH Keys\", \"keypair\":\"SSH Key\", \"tabs\":({\"basics\":\"Basics\"})}), \"setting\":({\"label\":\"Settings\", \"tabs\":({\"advanced\":\"Advanced\", \"ui\":\"UI\"}), \"validation\":({\"physicalNIC\":\"DefaultPhysicalNIC\"}), \"placeholder\":({\"accessKeyId\":\"Specify your access key ID\", \"secretAccessKey\":\"Specify your secret access key\", \"cert\":\"Upload a self-signed SSL certificate\"}), \"noSearchMatch\":\"No settings match your search.\", \"vlanChangeTip\":\"The newly modified default network interface only applies to newly added nodes, not existing ones.\", \"defaultPhysicalNIC\":\"Default Network Interface\", \"modifiedMessage\":\"Settings that have been customized from default settings are tagged with 'Modified'.\", \"percentTip\":\"The value in parentheses represents the distribution percentage of the network interface on all hosts. If an interface less than 100% is selected, the user needs to manually specify the network interface on the host where the vlan network configuration fails.\", \"message\":({\"ca\":({\"prefix\":\"Click\", \"middle\":\"here\", \"suffix\":\"to add a custom certificate.\"})}), \"sslCertificates\":({\"publicCertificate\":\"Public Certificate\", \"privateKey\":\"Private Key\", \"ca\":\"CA\"}), \"rancherCluster\":({\"kubeConfig\":\"Rancher KubeConfig\", \"removeUpstreamClusterWhenNamespaceIsDeleted\":\"Remove Upstream Cluster When Namespace Is Deleted\"}), \"clusterPodSecurityStandard\":({\"whitelistedNamespaces\":({\"label\":\"Whitelisted Namespaces\"}), \"privilegedNamespaces\":({\"label\":\"Privileged Namespaces\"}), \"restrictedNamespaces\":({\"label\":\"Restricted Namespaces\"})}), \"storageNetwork\":({\"range\":({\"placeholder\":\"e.g. 172.16.0.0/24\", \"label\":\"IP Range\", \"invalid\":\"\\\"Range\\\" is invalid.\"}), \"clusterNetwork\":\"Cluster Network\", \"vlan\":\"VLAN ID\", \"exclusiveVlan\":\"Exclusive VLAN\", \"exclude\":({\"label\":\"Exclude IPs\", \"placeholder\":\"CIDR format, e.g. 172.16.0.10/32\", \"invalid\":\"\\\"Exclude list\\\" is invalid.\", \"addIp\":\"Add Exclude IP\"}), \"warning\":\"WARNING: Any change to storage-network requires shutting down all virtual machines before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.\", \"tip\":\"Specify an IP range in the IPv4 CIDR format. Number of IPs Required = Number of Nodes * 2 + Number of Disks * 2 + Number of Images to Download/Upload . For more information about storage network settings, see the documentation .\"}), \"rwxNetwork\":({\"warning\":\"WARNING: Any change to rwx-network requires longhorn RWX volumes detached before applying this setting. Users have to ensure the cluster network is configured and VLAN Configuration will cover all nodes and ensure the network connectivity is working and expected in all nodes.\", \"shareStorageNetwork\":\"Share Storage Network\", \"dedicatedRwxNetwork\":\"Dedicated RWX Network\", \"shareStorageNetworkWarning\":\"The rwx-network is governed by storage-network, and changes here won't take effect until share-storage-network is set to false.\"}), \"vmForceDeletionPolicy\":({\"period\":\"Period\", \"vmMigrationTimeout\":\"VM Migration Timeout\"}), \"vmMigrationNetwork\":({\"parseError\":\"Failed to parse existing configuration.\", \"fetchError\":\"Failed to load required network resources: {error}. Please refresh the page or try again later.\", \"clusterNetwork\":\"Cluster Network\", \"vlan\":\"VLAN ID\", \"range\":({\"placeholder\":\"e.g. 172.16.0.0/24\", \"label\":\"IP Range\", \"invalid\":\"\\\"Range\\\" is invalid.\"}), \"exclude\":({\"label\":\"Excluded IPs\", \"placeholder\":\"e.g. 172.16.0.1/32\", \"invalid\":\"\\\"Exclude list\\\" is invalid.\", \"addButton\":\"Add Exclude IP\"})}), \"ratio\":\"Ratio\", \"autoRotateRKE2Certs\":({\"expiringInHours\":\"Expiring in\"}), \"httpProxy\":({\"warning\":\"WARNING: If you configure \\\"http-proxy\\\" and \\\"https-proxy\\\", you must also put Harvester node's CIDR into \\\"no-proxy\\\", otherwise the Harvester cluster will be broken.\"}), \"supportBundleImage\":({\"imagePullPolicy\":\"Pull Policy\", \"repo\":\"Repository\", \"tag\":\"Tag\"}), \"csiDriverConfig\":({\"provisioner\":\"Provisioner\", \"volumeSnapshotClassName\":\"Volume Snapshot Class Name\", \"backupVolumeSnapshotClassName\":\"Backup Volume Snapshot Class Name\"}), \"csiOnlineExpandValidation\":({\"provisioner\":\"Provisioner\", \"value\":\"Value\", \"invalidJsonFormat\":\"Configuration value is not a valid JSON format: {error}\", \"failedToLoadDrivers\":\"Failed to load CSI drivers. Error: {error}\"}), \"containerdRegistry\":({\"mirrors\":({\"mirrors\":\"Mirrors\", \"registryName\":\"Registry Name\", \"endpoints\":\"Endpoints\", \"rewrite\":({\"rewrite\":\"Rewrite\", \"addRewrite\":\"Add Rewrite\"}), \"addMirror\":\"Add Mirror\"}), \"configs\":({\"configs\":\"Configurations\", \"registryEDQNorIP\":\"Registry FDQN or IP\", \"registryPlaceholder\":\"myregistry.local:5000\", \"username\":\"Username\", \"password\":\"Password\", \"auth\":\"Auth\", \"identityToken\":\"Identity Token\", \"insecureSkipVerify\":\"InsecureSkipVerify\", \"addConfig\":\"Add Configuration\"})}), \"upgrade\":({\"unknownImageName\":\"Image name is not found.\", \"imageUrl\":\"Please input a valid image URL.\", \"chooseFile\":\"Please select to upload an image.\", \"checksum\":\"Checksum\", \"networkError\":\"Unable to upload the image. Resolve network issues that may have occurred and try again.\", \"cancelUpload\":\"Cancelled the image upload.\", \"uploadSuccess\":\"{name} uploaded successfully. Press Upgrade button to start the cluster upgrade process.\", \"deleteImage\":\"Please select an image to delete.\", \"deleteSuccess\":\"{name} deleted successfully.\", \"imagePreloadStrategy\":\"Image Preload Strategy\", \"nodeUpgradeOption\":\"Node Upgrade Option\", \"restoreVM\":\"Restore VM\", \"strategy\":\"Strategy\", \"pauseNodes\":\"Pause Nodes\", \"strategyType\":\"Strategy Type\", \"concurrency\":\"Concurrency\"}), \"harvesterMonitoring\":({\"label\":\"Harvester Monitoring\", \"section\":({\"prometheus\":\"Prometheus\", \"prometheusNodeExporter\":\"Prometheus Node Exporter\", \"grafana\":\"Grafana\", \"alertmanager\":\"Alertmanager\"}), \"tips\":({\"scrape\":\"Interval between consecutive scrapes\", \"evaluation\":\"Interval between consecutive evaluations\", \"retention\":\"How long to retain metrics\", \"retentionSize\":\"Maximum size of metrics\"})}), \"clusterRegistrationUrl\":({\"url\":\"URL\", \"insecureSkipTLSVerify\":\"Insecure Skip TLS Verify\", \"tip\":({\"prefix\":\"Harvester secures cluster registration via TLS by default. If opt out \\\"Insecure Skip TLS Verify\\\", you must provide custom CA certificates using the\", \"middle\":\"additional-ca\", \"suffix\":\"setting.\"}), \"message\":\"To completely unset the imported Harvester cluster, please also remove it on the Rancher Dashboard UI via the Virtualization Management page.\"}), \"ntpServers\":({\"isNotIPV4\":\"The address you entered is not IPv4 or host. Please enter a valid IPv4 address or a host address.\", \"isDuplicate\":\"There are duplicate NTP server configurations.\"}), \"instanceManagerResources\":({\"parseError\":\"Failed to parse configuration: {error}\", \"v1\":\"V1 Data Engine\", \"v2\":\"V2 Data Engine\"}), \"kubevirtMigration\":({\"parseError\":\"Failed to parse configuration: {error}\", \"parallelMigrationsPerCluster\":\"Parallel Migrations Per Cluster\", \"parallelOutboundMigrationsPerNode\":\"Parallel Outbound Migrations Per Node\", \"bandwidthPerMigration\":\"Bandwidth Per Migration\", \"bandwidthPerMigrationTooltip\":\"0 is KubeVirt default, representing unlimited bandwidth\", \"completionTimeoutPerGiB\":\"Completion Timeout Per GiB\", \"progressTimeout\":\"Progress Timeout\", \"allowAutoConverge\":\"Allow Auto Converge\", \"allowPostCopy\":\"Allow Post Copy\", \"unsafeMigrationOverride\":\"Unsafe Migration Override\", \"allowWorkloadDisruption\":\"Allow Workload Disruption\", \"disableTLS\":\"Disable TLS\", \"matchSELinuxLevelOnMigration\":\"Match SELinux Level On Migration\"})}), \"cloudTemplate\":({\"label\":\"Cloud Configuration Templates\", \"templateType\":\"Template Type\", \"userData\":\"User Data\", \"networkData\":\"Network Data\"}), \"support\":({\"title\":\"Harvester Support\", \"kubeconfig\":({\"title\":\"Download KubeConfig\", \"titleDescription\":\"Download kubeconfig for debugging.\"}), \"internal\":({\"rancher\":({\"title\":\"Access Embedded Rancher UI\", \"titleDescription\":\"You can only use the embedded Rancher UI for debugging and validation purposes. For more information about how Harvester integrates with Rancher, see the documentation .\"}), \"longhorn\":({\"title\":\"Access Embedded Longhorn UI\", \"titleDescription\":\"We only support to use the embedded Longhorn UI for debugging and validation purpose.\"})}), \"community\":({\"learnMore\":\"Find out more about SUSE Harvester support\", \"pricing\":\"Contact us for pricing\"})}), \"namespace\":({\"label\":\"Namespaces\"}), \"projectNamespace\":({\"label\":\"Projects/Namespaces\"}), \"vip\":({\"namespace\":({\"label\":\"Namespace\"}), \"cidr\":({\"label\":\"CIDR/IP Range\", \"invalid\":\"\\\"CIDR/IP Range\\\" is invalid.\", \"toolTip\":\"We can apply multiple pools or ranges by separating them with commas. For example: 192.168.0.200/30,192.168.0.200/29 or 192.168.0.10-192.168.0.11\"}), \"add\":({\"label\":\"Add IP Pools\"})}), \"sslParameters\":({\"protocols\":({\"label\":\"Protocols\"}), \"ciphers\":({\"label\":\"Ciphers\"})}), \"monitoring\":({\"configuration\":({\"label\":\"Configuration\"}), \"alertmanagerConfig\":({\"label\":\"Alertmanager Configurations\", \"diabledMonitoringTips\":({\"prefix\":\"Enable the\", \"middle\":\"monitoring\", \"suffix\":\"add-on first.\"}), \"diabledAlertingTips\":({\"prefix\":\"Enable\", \"middle\":\"Alertmanager\", \"suffix\":\"for configuration to take effect.\"}), \"disabledAddon\":({\"prefix\":\"The monitoring add-on is disabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it.\"})})}), \"logging\":({\"configuration\":({\"section\":({\"fluentbit\":\"Fluentbit\", \"fluentd\":\"Fluentd\"})}), \"clusterFlow\":({\"label\":\"Cluster Flows\"}), \"clusterOutput\":({\"label\":\"Cluster Outputs\"}), \"flow\":({\"label\":\"Flows\"}), \"output\":({\"label\":\"Outputs\"}), \"diabledTips\":({\"prefix\":\"Enable\", \"middle\":\"logging\", \"suffix\":\"for configuration to take effect.\"})}), \"snapshot\":({\"totalSnapshotSize\":\"Total Snapshot Size\", \"label\":\"Volume Snapshots\", \"targetVolume\":\"Original Volume\", \"size\":\"Size\", \"image\":\"Image\"}), \"vmSnapshot\":({\"label\":\"Virtual Machine Snapshots\", \"createText\":\"Restore Snapshot\", \"title\":\"Restore Virtual Machine\", \"snapshot\":\"Snapshot\"}), \"storage\":({\"label\":\"Storage\", \"useDefault\":\"Use the default storage\", \"volumeEncryption\":\"Volume Encryption\", \"secret\":\"Secret\", \"volumeExpansionCheckbox\":\"Enable Expansion\", \"migratable\":({\"label\":\"Migratable\"}), \"numberOfReplicas\":({\"label\":\"Number Of Replicas\"}), \"staleReplicaTimeout\":({\"label\":\"Stale Replica Timeout\"}), \"nodeSelector\":({\"label\":\"Host Selector\"}), \"diskSelector\":({\"label\":\"Disk Selector\"}), \"storageClass\":({\"label\":\"Storage Class\", \"longhorn\":({\"v1\":({\"label\":\"Longhorn V1 (CSI)\"}), \"v2\":({\"label\":\"Longhorn V2 (CSI)\"}), \"versionTooltip\":\"Longhorn V2 is disabled for this node.\"}), \"lvm\":({\"label\":\"LVM\"})}), \"title\":\"Storage Classes\", \"customize\":({\"volumeBindingMode\":({\"later\":\"Bind and provision a persistent volume once a virtual machine using the PersistentVolumeClaim is created\"})}), \"parameters\":({\"numberOfReplicas\":({\"label\":\"Number Of Replicas\"}), \"staleReplicaTimeout\":({\"label\":\"Stale Replica Timeout\"}), \"diskSelector\":({\"label\":\"Disk Selector\", \"no-options\":\"No available tags, please add in the `Host > Storage` page\"}), \"nodeSelector\":({\"label\":\"Node Selector\", \"no-options\":\"No available tags, please add in the `Host > Storage` page\"}), \"migratable\":({\"label\":\"Migratable\"}), \"lvmVolumeGroupType\":({\"label\":\"Volume Group Type\"}), \"lvmVolumeGroup\":({\"label\":\"Volume Group Name\", \"no-options\":\"No available Volume Groups, please add in the `Host > Storage` page\"}), \"node\":({\"label\":\"Node\"})}), \"allowedTopologies\":({\"title\":\"Allowed Topologies\", \"tooltip\":\"Allowed Topologies helps scheduling virtual machines on hosts which match all of below expressions.\"}), \"internal\":({\"label\":\"Internal Storage Class\", \"cannotDeleteTooltip\":\"Internal storage class volumes cannot be deleted\", \"cannotDeleteOrDefaultTooltip\":\"Internal storage classes cannot be deleted or set as default\"}), \"cdiSettings\":({\"label\":\"CDI Settings\", \"volumeModeAccessModes\":({\"label\":\"Volume Mode / Access Modes\", \"tooltip\":\"Specifies the default volume mode and access modes.\", \"add\":\"Add\", \"volumeMode\":\"Volume Mode\", \"accessModes\":({\"label\":\"Access Modes\"})}), \"volumeSnapshotClass\":({\"label\":\"Volume Snapshot Class\", \"tooltip\":\"Sets the Volume Snapshot Class name to be used when taking snapshots of PVCs under this StorageClass.\"}), \"cloneStrategy\":({\"label\":\"Clone Strategy\", \"tooltip\":\"Defines the clone strategy to use for volumes created with this StorageClass.\", \"copy\":\"Copy\", \"snapshot\":\"Snapshot\", \"csiClone\":\"CSI Clone\"}), \"fileSystemOverhead\":({\"label\":\"File System Overhead\", \"tooltip\":\"Specifies the percentage of filesystem overhead to consider when calculating PVC size.\", \"placeholder\":\"e.g. 0.05 (up to 3 decimal places, between 0 and 1)\"})})}), \"vlanConfig\":({\"title\":\"Network Configuration\", \"createNetworkConfig\":\"Create Network Configuration\", \"action\":({\"migrate\":\"Migrate\"}), \"titles\":({\"nodeSelector\":\"Node Selector\", \"uplink\":\"Uplink\", \"bondOptions\":\"Bond Options\", \"attributes\":\"Attributes\", \"host\":\"Selected Hosts\"}), \"scheduling\":({\"affinity\":({\"allNodes\":\"Select all nodes\", \"specificNode\":\"Select specific node\", \"schedulingRules\":\"Select node(s) matching rules\"})}), \"uplink\":({\"nics\":({\"label\":\"NIC\", \"addLabel\":\"Add NIC\", \"overlayWarning\":\"The NIC selected here must match the NIC provided in the provider network.\", \"placeholder\":\"Select a NIC that is available on all the selected nodes\", \"validate\":({\"available\":\"NIC \\\"{nic}\\\" is not available on the selected nodes\"})}), \"linkAttributes\":({\"mtu\":({\"label\":\"MTU\"})}), \"bondOptions\":({\"mode\":({\"label\":\"Mode\"}), \"miimon\":({\"label\":\"Miimon\", \"tooltip\":\"Miimon specifies the MII link monitoring frequency in milliseconds. -1 means to keep the original value.\"})})}), \"nodeSelector\":({\"matchingNodes\":({\"matchesSome\":\"{matched, plural,\\n =0 {Matches 0 of {total, number} Nodes.}\\n =1 {Matches 1 of {total, number} Nodes: \\\"{sample}\\\"}\\n other {Matches {matched, number} of {total, number} existing Nodes, including \\\"{sample}\\\"}\\n}\"})})}), \"vlanStatus\":({\"vlanConfig\":({\"label\":\"Network Configuration\", \"l2VlanMode\":({\"access\":\"Access\", \"trunk\":\"Trunk\", \"label\":\"Mode\"}), \"vlanTrunk\":({\"minId\":\"Minimum VLAN ID\", \"maxId\":\"Maximum VLAN ID\", \"add\":\"Add VLAN Trunk\"})})}), \"clusterNetwork\":({\"title\":\"Cluster Network Configuration\", \"create\":({\"button\":({\"label\":\"Create a Cluster Network\"})}), \"clusterNetwork\":\"There are no network configurations defined.\", \"mgmt\":\"mgmt is a built-in cluster management network and does not support any additional network configurations.\", \"notExist\":\"Cluster Network \\\"{ clusterNetwork }\\\" does not exist\", \"notReady\":\"Cluster Network \\\"{ clusterNetwork }\\\" is not ready\"}), \"addons\":({\"descriptions\":({\"harvester-system/vm-import-controller\":\"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.\", \"harvester-system/pcidevices-controller\":\"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machine and guest clusters.\", \"cattle-logging-system/rancher-logging\":\"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.\", \"harvester-system/rancher-vcluster\":\"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.\", \"cattle-monitoring-system/rancher-monitoring\":\"rancher-monitoring is an add-on that collects Harvester cluster and virtual machine metrics and allows you to view the metrics on an embedded dashboard and send alert(s) to remote servers.\", \"vm-import-controller\":\"vm-import-controller is an add-on to help migrate virtual machine workloads from other source clusters to an existing Harvester cluster.\", \"pcidevices-controller\":\"pcidevices-controller is an add-on to help discover PCI devices for nodes in your cluster and allow users to prepare devices for PCI Passthrough, for use with Harvester virtual machines and guest clusters.\", \"nvidia-driver-toolkit\":\"nvidia-driver-toolkit is an add-on to enable vGPU devices and assign them to Harvester virtual machines.\", \"rancher-logging\":\"rancher-logging is an add-on to collect versatile logs, events, and audits from the Harvester cluster and route them to many kinds of servers based on flows.\", \"rancher-monitoring\":\"rancher-monitoring is an add-on to collect Harvester cluster and virtual machine metrics, view them on the embedded dashboard, and send alert(s) to remote servers.\", \"rancher-vcluster\":\"rancher-vcluster deploys a virtual cluster (vcluster) with Rancher installed.\", \"harvester-seeder\":\"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.\", \"harvester-system/harvester-seeder\":\"harvester-seeder is an add-on that uses IPMI and Redfish to discover hardware information and perform out-of-band operations.\", \"harvester-csi-driver-lvm\":\"harvester-csi-driver-lvm is an add-on allowing users to create PVC through the LVM with local devices.\", \"descheduler\":\"The virtual machine auto balance optimizes workload scheduling by evicting pods that are not optimally placed according to administrator-defined policies.\"}), \"vmMigration\":({\"generic\":({\"unknown\":\"Unknown\", \"identifier\":\"Identifier\", \"podNetwork\":\"Pod Network\", \"usedBy\":\"Used by:\", \"vlan\":\"VLAN {id}\", \"vCpu\":\"{count} vCPU\", \"memoryGb\":\"{value} GB\", \"memoryTb\":\"{value} TB\", \"elapsed\":({\"hoursAndMinutes\":\"{hours} {hours, plural, one {hour} other {hours}} and {minutes} {minutes, plural, one {minute} other {minutes}}\", \"hours\":\"{hours} {hours, plural, one {hour} other {hours}}\", \"minutes\":\"{minutes} {minutes, plural, one {minute} other {minutes}}\"})}), \"errors\":({\"failedLoadPlans\":\"Failed to load migration plans\", \"failedLoadVms\":\"Failed to load virtual machines\", \"failedRefreshVms\":\"Failed to refresh virtual machines\", \"failedLoadProviders\":\"Failed to load providers\", \"failedLoadProvider\":\"Failed to load provider: {error}\", \"failedResolveDetails\":\"Failed to resolve network and datastore details\", \"failedDecodeCredentials\":\"Failed to decode provider credentials\", \"connectionFailed\":\"Connection failed\", \"providerNotReady\":\"Provider not ready\"}), \"labels\":({\"dashboard\":\"Migration Overview\", \"provider\":\"Providers\", \"networkMap\":\"Network Maps\", \"storageMap\":\"Storage Maps\", \"plan\":\"Migration Plans\", \"migration\":\"Migrations\"}), \"providerWizard\":({\"title\":\"Create Provider\", \"editTitle\":\"Edit Provider\"}), \"wizard\":({\"title\":\"VM Migration\", \"steps\":({\"configureProvider\":({\"label\":\"Provider\", \"description\":\"Configure Provider\"}), \"selectVms\":({\"label\":\"VMs\", \"description\":\"Select VMs\"}), \"configureMappings\":({\"label\":\"Mappings\", \"description\":\"Define Mappings\"}), \"reviewMigration\":({\"label\":\"Migration Plan\", \"description\":\"Review Migration Plan\"})})}), \"fields\":({\"username\":\"Username\", \"password\":\"Password\"}), \"configureProvider\":({\"title\":\"Configure Provider\", \"description\":\"Connect to your VMware vCenter or ESXi host to discover virtual machines for migration\", \"connectionDetails\":\"Connection Details\", \"providerSelect\":\"Provider\", \"createNew\":\"Create new provider\", \"requirementsTitle\":\"Requirements\", \"requirementsText\":\"To migrate virtual machines from VMware, you will need a vCenter Server running version 6.5 or higher with a user account that has at least read permissions, and the source environment must be network-accessible from Rancher.\", \"name\":\"Name\", \"urlLabel\":\"vCenter/ESXi URL\", \"urlPlaceholder\":\"https://vcenter.example.com/sdk\", \"urlHint\":\"Enter the full URL including https://\", \"skipSsl\":\"Skip SSL certificate verification\", \"skipSslHint\":\"Not recommended for production environments\", \"testConnection\":({\"action\":\"Test Connection\", \"success\":\"Connection successful\", \"error\":\"Connection failed\", \"waiting\":\"Testing connection...\"}), \"testSuccess\":\"Connection test passed\", \"testFailed\":\"Connection test failed\", \"testMissingFields\":\"Please fill in all required fields before testing\", \"testTimeout\":\"Connection test timed out — the provider did not report a status in time\", \"save\":\"Save Provider and Continue\", \"saveExisting\":\"Check Provider and Continue\"}), \"selectVms\":({\"title\":\"Select Virtual Machines\", \"description\":\"Select the virtual machines you want to migrate from the source provider\", \"discovered\":\"{count} VMs discovered from\", \"lastSynced\":\"Last synced {time} ago • \", \"refreshNow\":\"Refresh now\", \"availableVms\":\"Available Virtual Machines\", \"selected\":\"selected\", \"saveSelection\":\"Save Selection and Continue\", \"selectAllBanner\":({\"pageOnly\":\"Your current selection includes only VMs currently shown on the page.\", \"selectAll\":\"Select all {count} VMs from this provider\", \"allSelected\":\"Your current selection includes all VMs.\", \"clearSelection\":\"Clear Selection\"}), \"manualEntry\":({\"title\":\"Add Virtual Machines\", \"description\":\"No VMs were discovered from the provider inventory. Add VMs manually by entering their IDs and names.\", \"vmId\":\"VM ID\", \"vmIdPlaceholder\":\"e.g. vm-60527\", \"add\":\"Add\", \"added\":\"VMs added\"}), \"columns\":({\"vmName\":\"VM Name\", \"vmId\":\"VM ID\", \"os\":\"Operating System\", \"resources\":\"Resources\", \"powerState\":\"Power State\", \"network\":\"Network\", \"datastore\":\"Datastore\"})}), \"dashboard\":({\"title\":\"Virtual Machine Migration Overview\", \"description\":\"Migrate virtual machines from VMware vSphere to Harvester using cold migration for data consistency. Create a migration plan to select VMs, map networks and storage, and prepare a migration to Harvester.\", \"createPlan\":\"Create Migration\", \"tableTitle\":\"Migrations\", \"columns\":({\"status\":\"Status\", \"plan\":\"Migration Plan\", \"progress\":\"Progress\", \"mappings\":\"Mappings\", \"duration\":\"Duration\"}), \"progress\":({\"failed\":\"Failed\", \"migration\":\"Migration\", \"initializingMigration\":\"Initializing migration\", \"finishedSuccessfully\":\"Finished Successfully\", \"step\":\"Step {index}\", \"vmCount\":\"{count} VMs\", \"vmId\":\"id: {id}\"})}), \"configureMappings\":({\"title\":\"Set Mappings\", \"description\":\"Map VMware networks and datastores to Harvester and Longhorn target resources\", \"save\":\"Save Mappings and Continue\", \"noTemplate\":\"Start from scratch\", \"removeMap\":\"Remove Map\", \"networkMapping\":({\"title\":\"Network Mapping\", \"description\":\"Map VMware port groups to Harvester networks\", \"placeholder\":\"Choose a Harvester network\", \"template\":\"Use existing network mapping as template\", \"options\":({\"podNetworking\":\"Management Network\", \"ignored\":\"Ignored\"})}), \"storageMapping\":({\"title\":\"Storage Mapping\", \"description\":\"Map VMware datastores to Harvester storage classes\", \"placeholder\":\"Choose a Longhorn Storage Volume\", \"template\":\"Use existing storage mapping as template\"})}), \"reviewMigration\":({\"title\":\"Review Migration Plan\", \"description\":\"Confirm your migration settings before starting the transfer of VMs to the target cluster.\", \"planName\":\"Name\", \"planNamePlaceholder\":\"e.g. my-migration-plan\", \"migrationDetails\":\"Migration Details\", \"totalVms\":\"Total VMs\", \"vcpu\":\"vCPU\", \"memory\":\"Memory\", \"storage\":\"Storage\", \"source\":\"Source\", \"targetNamespace\":\"Target Namespace\", \"migrationMode\":\"Migration Mode\", \"coldMigration\":\"Cold Migration\", \"virtualMachines\":\"Virtual Machines\", \"warningTitle\":\"Cold Migration Warning\", \"warningMessage\":\"All source VMs will be powered off, and downtime will occur during migration. Plan your maintenance window accordingly and notify relevant stakeholders\", \"startMigration\":\"Start Migration Plan\"}), \"plan\":({\"states\":({\"error\":\"Error\", \"canceled\":\"Canceled\", \"inProgress\":\"In Progress\", \"active\":\"Succeeded\"}), \"actions\":({\"start\":\"Start\", \"restart\":\"Restart\", \"stop\":\"Stop\"})}), \"deleteDialog\":({\"warning\":\"Deleting this migration plan will also delete the following related resources\"})}), \"vmImport\":({\"titles\":({\"basic\":\"Basic\", \"auth\":\"Authentication\", \"pvc\":\"Volume\", \"networking\":\"Network Mapping\", \"advanced\":\"Advanced\"}), \"labels\":({\"vmimport\":\"Virtual Machine Import\", \"vmimportSourceVMWare\":\"Source VMWare\", \"vmimportSourceOpenStack\":\"Source OpenStack\", \"vmimportSourceOVA\":\"Source OVA\"}), \"fields\":({\"sourceProvider\":\"Source Provider Type\", \"sourceCluster\":\"Source Cluster\", \"vmName\":\"VM Name\", \"targetStorageClass\":\"Target Storage Class\", \"sourceNetwork\":\"Source Network Name\", \"destNetwork\":\"Destination Network\", \"interfaceModel\":\"Interface Model\", \"folder\":\"Folder\", \"diskBus\":\"Default Disk Bus\", \"defaultInterface\":\"Default Network Interface\", \"skipPreflight\":\"Skip Preflight Checks\", \"forcePowerOff\":\"Force Power Off Source VM\", \"username\":\"Username\", \"password\":\"Password\", \"caCert\":\"CA Certificate (PEM)\", \"selectSecret\":\"Select Secret\", \"createSecret\":\"Create New Credentials\", \"useSecret\":\"Use Existing Secret\", \"none\":\"None (Public URL)\"}), \"placeholders\":({\"selectCluster\":\"Select a cluster...\", \"selectProviderFirst\":\"Select a provider type first\", \"matchSource\":\"Must match the name in the source cluster\", \"folderExample\":\"e.g. /Datacenters/DC1/vm\", \"caCert\":\"-----BEGIN CERTIFICATE----- ...\"}), \"options\":({\"useDefault\":\"Use Default\"}), \"actions\":({\"addNetwork\":\"Add Network Mapping\", \"remove\":\"Remove\"}), \"errors\":({\"rfc1123\":\"Invalid format. Name must be lowercase, alphanumeric, and cannot contain spaces (e.g. \\\"my-vm-1\\\"). If your Source VM name does not match this, you must rename it on the Source cluster first.\", \"networkMappingRequired\":\"Every Network Mapping row must have a Source and Destination selected.\"}), \"openstack\":({\"fields\":({\"endpoint\":\"Identity Service Endpoint\", \"region\":\"Region\", \"projectName\":\"Project Name\", \"domainName\":\"Domain Name\", \"retryCount\":\"Upload Image Retry Count\", \"retryDelay\":\"Upload Image Retry Delay\"}), \"placeholders\":({\"endpoint\":\"e.g. https://devstack/identity\", \"region\":\"e.g. RegionOne\", \"projectName\":\"e.g. admin\", \"domainName\":\"e.g. default\", \"retryCount\":\"Default: 30\", \"retryDelay\":\"Default: 10\"})}), \"vmware\":({\"fields\":({\"endpoint\":\"vCenter Endpoint\", \"datacenter\":\"Datacenter\"}), \"placeholders\":({\"endpoint\":\"e.g. https://vscim/sdk\", \"datacenter\":\"e.g. DC0\"}), \"tooltips\":({\"datacenter\":\"The exact name of the Datacenter object in vCenter\"})}), \"ova\":({\"fields\":({\"url\":\"URL\", \"httpTimeout\":\"HTTP Timeout\"}), \"placeholders\":({\"url\":\"e.g. https://download.example.com/images/my-vm.ova\", \"httpTimeout\":\"Default: 600\"})})}), \"rancherVcluster\":({\"accessRancher\":\"Access the Rancher Dashboard\", \"hostname\":\"Hostname\", \"rancherVersion\":\"Rancher Version\", \"password\":\"Bootstrap Password\"}), \"switchFailed\":\"{action} {name} failed!\", \"nvidiaDriverToolkit\":({\"titles\":({\"basic\":\"Controller\", \"image\":\"Image\", \"driver\":\"Driver\"}), \"image\":({\"tag\":\"Image Tag\", \"repository\":\"Image Repository\"}), \"driver\":({\"location\":\"Driver Location\"}), \"enable\":({\"title\":\"Enable NVIDIA Driver Toolkit\"}), \"parsingSpecError\":\"The field 'spec.valuesContent' has invalid format.\"}), \"usbController\":({\"titles\":({\"basic\":\"Basic\"})})}), \"loadBalancer\":({\"label\":\"Load Balancers\", \"tabs\":({\"basic\":\"Basic\", \"listeners\":\"Listeners\", \"healthCheck\":\"Health Check\", \"backendServer\":\"Backend Server Selector\"}), \"workloadType\":({\"label\":\"Workload Type\", \"options\":({\"cluster\":\"Guest Kubernetes Cluster\", \"vm\":\"Virtual Machine\"})}), \"ipam\":({\"label\":\"IPAM\", \"options\":({\"dhcp\":\"DHCP\", \"pool\":\"Pool\"})}), \"ipPool\":({\"label\":\"IP Pool\", \"options\":({\"none\":\"Auto (Select IP Pool automatically)\"})}), \"listeners\":({\"name\":({\"label\":\"Name\"}), \"protocol\":({\"label\":\"Protocol\"}), \"port\":({\"label\":\"Port\"}), \"backendPort\":({\"label\":\"Backend Port\", \"placeholder\":\"e.g. 80\"})}), \"backendServerSelector\":({\"matchingVMs\":({\"matchesSome\":\"{matched, plural,\\n =0 {Matches 0 of {total, number} virtual machines in the namespace where the load balancer is.}\\n =1 {Matches 1 of {total, number} virtual machines in the namespace where the load balancer is: \\\"{sample}\\\"}\\n other {Matches {matched, number} of {total, number} existing virtual machines in the namespace where the load balancer is, including \\\"{sample}\\\"}\\n}\"})}), \"backendServers\":({\"label\":\"Backend Servers\"}), \"healthCheck\":({\"warning\":({\"portInUse\":\"Warning, the Backend Port {port} is in use in Health Check settings. If you need to update the port, update the Health Check settings accordingly.\"})})}), \"ipPool\":({\"label\":\"IP Pools\", \"network\":({\"label\":\"Virtual Machine Network\"}), \"tabs\":({\"range\":\"Range\", \"scope\":\"Scope\", \"selector\":\"Selector\"}), \"subnet\":({\"label\":\"Subnet\"}), \"startIP\":({\"label\":\"Start IP\"}), \"endIP\":({\"label\":\"End IP\"}), \"gateway\":({\"label\":\"Gateway\"}), \"namespace\":({\"label\":\"Namespace\"}), \"project\":({\"label\":\"Project\"}), \"guestCluster\":({\"label\":\"Guest Kubernetes Cluster\"}), \"availableIP\":({\"label\":\"Available IP Count\"}), \"scope\":({\"label\":\"Scope\", \"addLabel\":\"Add Scope\"}), \"priority\":({\"label\":\"Priority\"}), \"cidr\":({\"addLabel\":\"Add CIDR\"}), \"range\":({\"addLabel\":\"Add Range\"})}), \"hostNetworkConfig\":({\"label\":\"Host Networks\", \"mode\":({\"label\":\"Mode\"}), \"tabs\":({\"mode\":\"Mode\", \"nodeSelector\":\"Node Selector\"}), \"nodeSelector\":({\"addButton\":\"Add Node Selector\"}), \"underlay\":({\"label\":\"Underlay\", \"tooltip\":\"Allow this interface to act as the underlay for VM overlay networks.\", \"conflict\":\"`{name}` host network config already has underlay enabled. Only one underlay is allowed in the cluster.\", \"noKubeovn\":({\"prefix\":\"The kubeovn-operator add-on is not enabled. Click\", \"middle\":\"here\", \"suffix\":\"to enable the add-on for overlay networking.\"})}), \"vlanID\":({\"label\":\"VLAN ID\"}), \"ipRange\":({\"label\":\"IP Range ({node})\", \"placeholder\":\"e.g. 192.168.1.10/24\"}), \"ips\":({\"nodeLabel\":\"Node\", \"label\":\"IP\", \"placeholder\":\"e.g. 192.168.1.10/24\"})}), \"service\":({\"healthCheckPort\":({\"label\":\"Health Check Port\"}), \"healthCheckSuccessThreshold\":({\"label\":\"Health Check Success Threshold\", \"description\":\"If the number of times the probe continuously detects an address successfully reaches the success threshold, then the backend server can start to forward traffic.\"}), \"healthCheckFailureThreshold\":({\"label\":\"Health Check Failure Threshold\", \"description\":\"The backend server will stop forwarding traffic if the number of health check failures reaches the failure threshold.\"}), \"healthCheckPeriod\":({\"label\":\"Health Check Period\"}), \"healthCheckTimeout\":({\"label\":\"Health Check Timeout\"}), \"healthCheckEnabled\":({\"label\":\"Health Check\"})}), \"secret\":({\"label\":\"Secrets\"}), \"sriov\":({\"label\":\"SR-IOV Network Devices\", \"nodeName\":\"Node\", \"numVFs\":\"Number Of Virtual Functions\", \"vfAddresses\":\"Virtual Functions Addresses\", \"showMore\":\"Show More\", \"parentSriov\":\"Filter By Parent SR-IOV Netork Device\", \"parentSriovGPU\":\"Filter By Parent SR-IOV GPU Device\"}), \"sriovgpu\":({\"label\":\"SR-IOV GPU Devices\", \"nodeName\":\"Node\", \"numVFs\":\"Number of Virtual Functions\", \"vfAddresses\":\"Virtual Functions Addresses\", \"vGpuDevices\":\"vGPU Devices\", \"showMore\":\"Show More\", \"parentSriov\":\"Filter By Parent SR-IOV GPU\", \"noPermission\":\"Please contact your system administrator to add Harvester add-ons first.\", \"goSetting\":({\"prefix\":\"The nvidia-driver-toolkit add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it to manage your SR-IOV GPU devices.\"})}), \"migconfiguration\":({\"label\":\"vGPU MIG Configurations\", \"status\":({\"outOfSync\":\"Out of Sync\"}), \"infoBanner\":\"To configure the MIG configuration, please disable it first and re-enable after editing the configuration.\", \"profileSpec\":\"Profile Specs\", \"profileStatus\":\"Profile Status\", \"tableHeaders\":({\"profileName\":\"Profile Name\", \"total\":\"Total\", \"vGPUID\":\"vGPU ID\", \"available\":\"Available\", \"requested\":\"Requested\"}), \"requested\":\"Requested\", \"available\":\"Available\", \"total\":\"Total\", \"vGPUID\":\"vGPU ID\", \"goSriovGPU\":({\"prefix\":\"Please enable the supported GPU devices in\", \"middle\":\"SR-IOV GPU Devices\", \"suffix\":\"page to manage the vGPU MIG configurations.\"})}), \"vgpu\":({\"label\":\"vGPU Devices\", \"noPermission\":\"Please contact system administrator to add Harvester add-ons first.\", \"detachWarning\":({\"title\":\"Cannot Disable vGPU\", \"message\":\"Please detach the device from the VM and save it first before disabling this vGPU device.\"}), \"goSetting\":({\"prefix\":\"The nvidia-driver-toolkit add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it to manage your vGPU devices.\"}), \"enableGroup\":\"Enable Group\", \"disableGroup\":\"Disable Group\", \"enable\":({\"title\":\"Select vGPU\", \"type\":\"Type\"}), \"available\":\"Available Devices\", \"compatibleNodes\":\"Compatible Nodes\", \"impossibleSelection\":\"There are no hosts with all of the selected devices.\", \"howToUseDevice\":\"Use the table below to enable vGPU devices you want to use in this virtual machine.\", \"deviceInTheSameHost\":\"You can only select devices on the same host.\"}), \"usb\":({\"label\":\"USB Devices\", \"noPermission\":\"Please contact system admin to add Harvester add-ons first\", \"goSetting\":({\"prefix\":\"The pcidevices-controller add-on is not enabled, click\", \"middle\":\"here\", \"suffix\":\"to enable it to manage your USB devices.\"}), \"enableGroup\":\"Enable Group\", \"disableGroup\":\"Disable Group\", \"available\":\"Available USB Devices\", \"compatibleNodes\":\"Compatible Nodes\", \"impossibleSelection\":\"There are no hosts with all of the selected devices.\", \"howToUseDevice\":\"Use the table below to enable USB passthrough on each device you want to use in this VM.\", \"deviceInTheSameHost\":\"You can only select devices on the same host.\", \"showCompatibility\":\"Show device compatibility matrix\", \"hideCompatibility\":\"Hide device compatibility matrix\", \"claimError\":\"Error enabling passthrough on {name}\", \"unclaimError\":\"Error disabling passthrough on {name}\", \"cantUnclaim\":\"You cannot disable passthrough on a device claimed by another user.\", \"detachWarning\":({\"title\":\"Cannot Disable Passthrough\", \"message\":\"Please detach the device from the VM and save it first before disabling passthrough.\"}), \"enablePassthroughWarning\":\"Please re-enable the USB device if the device path changes in the following situations:  1) Re-plugging the USB device.  2) Rebooting the node. An incorrect device path may cause passthrough to fail.\", \"classType\":\"Class Type\"}), \"harvesterVlanConfigMigrateDialog\":({\"targetClusterNetwork\":({\"label\":\"Target Cluster Network\", \"placeholder\":\"Choose Target Cluster Network\"})}), \"seeder\":({\"banner\":({\"enable\":({\"prefix\":\"The \\\"harvester-seeder\\\" add-on is disabled.\", \"middle\":\"Click here\", \"suffix\":\"to enable it.\"}), \"noAccess\":\"Please contact your system administrator to enable the Out-of-Band Access first.\", \"noAddon\":\"The \\\"harvester-seeder\\\" add-on does not exist, please check if it is installed.\", \"noInventory\":\"Waiting for \\\"inventories.metal.harvesterhci.io\\\" to be ready.\"}), \"inventory\":({\"host\":({\"label\":\"Host\", \"placeholder\":\"e.g. 172.16.1.1\"}), \"port\":({\"label\":\"Port\", \"placeholder\":\"e.g. 623\"}), \"insecureTLS\":({\"label\":\"Insecure TLS\"}), \"secret\":({\"label\":\"Secret\", \"create\":({\"title\":\"Add Secret\"})}), \"event\":({\"label\":\"Event\"}), \"pollingInterval\":({\"label\":\"Polling Interval\"})})})}), \"typeDescription\":({\"harvester\":\"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos and color scheme.\"}), \"advancedSettings\":({\"experimental\":\"Experimental features allow users to test and evaluate early-access functionality prior to official supported releases\", \"descriptions\":({\"harv-vlan\":\"Default Network Interface name of the VLAN network.\", \"harv-backup-target\":\"Custom backup target to store virtual machine backups.\", \"branding\":\"Branding allows administrators to globally re-brand the UI by customizing the Harvester product name, logos, and color scheme.\", \"harv-csi-driver-config\":\"Configure additional information for CSI drivers.\", \"harv-csi-online-expand-validation\":\"Allow online volume expansion for specific CSI drivers.\", \"harv-containerd-registry\":\"Containerd Registry Configuration to connect private registries.\", \"harv-log-level\":\"Configure Harvester server log level. Defaults to Info.\", \"harv-server-version\":\"Harvester server version.\", \"harv-upgrade-checker-enabled\":\"Specifies whether to enable Harvester upgrade check or not. Default is True.\", \"harv-upgrade-checker-url\":\"Default Harvester upgrade check url. Only used when the upgrade-checker-enabled is equal to True.\", \"harv-ui-source\":\"Configure how to load the UI source. The `External` option is used to load the UI from a ui-index URL, while the `Bundled` option loads the UI from the local Harvester server.\", \"harv-ui-index\":\"HTML index location for the UI.\", \"harv-cluster-registration-url\":\"Registration URL for multi-cluster management.\", \"harv-http-proxy\":\"HTTP proxy for Harvester to access external services.\", \"harv-additional-ca\":\"Custom CA root certificates for TLS validation.\", \"harv-overcommit-config\":\"Resource overcommit configuration.\", \"harv-support-bundle-timeout\":\"Support bundle timeout configuration in minutes, use 0 to disable the timeout.\", \"harv-support-bundle-file-name\":\"Support bundle file name configuration.\", \"harv-support-bundle-expiration\":\"Support bundle expiration configuration in minutes.\", \"harv-support-bundle-node-collection-timeout\":\"Support bundle node collection timeout configuration in minutes.\", \"harv-vm-force-reset-policy\":\"Configuration for the force-reset action when a virtual machine is stuck on a node that is down.\", \"harv-ssl-parameters\":\"Custom SSL Parameters for TLS validation.\", \"harv-storage-network\":\"Longhorn storage-network setting.\", \"harv-rwx-network\":\"Configure RWX network behavior for shared or dedicated storage network usage.\", \"harv-support-bundle-namespaces\":\"Select additional namespaces to include in the support bundle.\", \"harv-auto-disk-provision-paths\":\"Specify the disks(using glob pattern) that Harvester will automatically add as virtual machine storage.\", \"harv-support-bundle-image\":\"Support bundle image configuration. Find different versions in rancher/support-bundle-kit .\", \"harv-release-download-url\":\"This setting allows you to configure the upgrade release download URL address. Harvester will get the ISO URL and checksum value from the ($URL/$VERSION/version.yaml) file hosted by the configured URL.\", \"harv-default-vm-termination-grace-period-seconds\":\"Configure the virtual machine termination grace period for virtual machine stop.\", \"harv-ntp-servers\":\"Configure NTP server. You can configure multiple IPv4 addresses or host addresses.\", \"harv-auto-rotate-rke2-certs\":\"The certificate rotation mechanism relies on Rancher. Harvester will automatically update certificates generation to trigger rotation.\", \"harv-kubeconfig-default-token-ttl-minutes\":\"TTL (in minutes) applied on Harvester administration kubeconfig files. Default is 0, which means to never expire.\", \"harv-longhorn-v2-data-engine-enabled\":\"Enable the Longhorn V2 data engine. Default is false. Changing this setting will restart RKE2 on all nodes. This will not affect running VM workloads. If you see \\\"not enough hugepages-2Mi capacity\\\" errors when enabling this setting, wait a minute for the error to clear. If the error remains, reboot the affected node. \", \"harv-longhorn-v2-data-engine-hugepage-enabled\":\"Enable hugepages when using the Longhorn V2 data engine. Default is true. Disabling hugepages reduces memory pressure on low-spec nodes and increases deployment flexibility. However, performance may be lower compared to running with hugepages.\", \"harv-longhorn-v2-data-engine-memory-size\":\"Configure the amount of memory allocated to the SPDK target daemon when using the Longhorn V2 data engine. Default is 2048 MiB.\", \"harv-additional-guest-memory-overhead-ratio\":\"The ratio for kubevirt to adjust the VM overhead memory. The value could be zero, empty value or floating number between 1.0 and 10.0, default to 1.5.\", \"harv-upgrade-config\":\"Configure image preloading and VM restore options for upgrades. See related fields in settings/upgrade-config \", \"harv-vm-migration-network\":\"Segregated network for VM migration traffic.\", \"harv-rancher-cluster\":\"Configure Rancher cluster integration settings for guest cluster management.\", \"harv-max-hotplug-ratio\":\"The ratio for kubevirt to limit the maximum CPU and memory that can be hotplugged to a VM. The value could be an integer between 1 and 20, default to 4.\", \"harv-kubevirt-migration\":\"Configure cluster-wide KubeVirt live migration parameters.\", \"harv-instance-manager-resources\":\"Configure resource percentage reservations for Longhorn instance manager V1 and V2. Valid instance manager CPU range between 0 - 40.\", \"harv-cluster-pod-security-standard\":\"Enforce Kubernetes Pod Security Standards (PSS) at the cluster level.\"})}), \"typeLabel\":({\"kubevirt.io.virtualmachine\":\"{count, plural,\\n one { Virtual Machine }\\n other { Virtual Machines }\\n}\", \"harvesterhci.io.virtualmachineimage\":\"{count, plural,\\n one { Image }\\n other { Images }\\n}\", \"harvesterhci.io.keypair\":\"{count, plural,\\n one { SSH Key }\\n other { SSH Keys }\\n}\", \"harvesterhci.io.host\":\"{count, plural,\\n one { Host }\\n other { Hosts }\\n}\", \"harvesterhci.io.networkattachmentdefinition\":\"{count, plural,\\n one { Virtual Machine Network }\\n other { Virtual Machine Networks }\\n}\", \"harvesterhci.io.volume\":\"{count, plural,\\n one { Volume }\\n other { Volumes }\\n}\", \"harvesterhci.io.user\":\"{count, plural,\\n one { User }\\n other { Users }\\n}\", \"harvesterhci.io.setting\":\"{count, plural,\\n one { Setting }\\n other { Settings }\\n}\", \"harvesterhci.io.virtualmachinetemplateversion\":\"{count, plural,\\n one { Template }\\n other { Templates }\\n}\", \"harvesterhci.io.schedulevmbackup\":\"{count, plural,\\n one { Virtual Machine Schedule }\\n other { Virtual Machine Schedules }\\n}\", \"harvesterhci.io.virtualmachinebackup\":\"{count, plural,\\n one { Virtual Machine Backup }\\n other { Virtual Machine Backups }\\n}\", \"kubeovn.io.vpc\":\"{count, plural,\\n one { Virtual Private Cloud }\\n other { Virtual Private Clouds }\\n}\", \"kubeovn.io.vlan\":\"{count, plural,\\n one { VLAN Network }\\n other { VLAN Networks }\\n}\", \"kubeovn.io.providernetwork\":\"{count, plural,\\n one { Provider Network }\\n other { Provider Networks }\\n}\", \"kubeovn.io.vpcnatgateway\":\"{count, plural,\\n one { NAT Gateway }\\n other { NAT Gateways }\\n}\", \"kubeovn.io.iptablessnatrule\":\"{count, plural,\\n one { Source Rule }\\n other { Source Rules }\\n}\", \"kubeovn.io.iptablesdnatrule\":\"{count, plural,\\n one { Destination Rule }\\n other { Destination Rules }\\n}\", \"kubeovn.io.iptableseip\":\"{count, plural,\\n one { External IP }\\n other { External IPs }\\n}\", \"networking.k8s.io.networkpolicy\":\"{count, plural,\\n one { Network Policy }\\n other { Network Policies }\\n}\", \"harvesterhci.io.cloudtemplate\":\"{count, plural,\\n one { Cloud Configuration Template }\\n other { Cloud Configuration Templates }\\n}\", \"harvesterhci.io.volumesnapshot\":\"{count, plural,\\n one { Volume Snapshot }\\n other { Volume Snapshots }\\n}\", \"harvesterhci.io.vmsnapshot\":\"{count, plural,\\n one { Virtual Machine Snapshot }\\n other { Virtual Machine Snapshots }\\n}\", \"network.harvesterhci.io.vlanconfig\":\"{count, plural,\\n one { Network Configuration }\\n other { Network Configurations }\\n}\", \"harvesterhci.io.monitoring.alertmanagerconfig\":\"{count, plural,\\n one { Alertmanager Configuration }\\n other { Alertmanager Configurations }\\n}\", \"harvesterhci.io.logging.clusterflow\":\"{count, plural,\\n one { Cluster Flow }\\n other { Cluster Flows }\\n}\", \"harvesterhci.io.logging.clusteroutput\":\"{count, plural,\\n one { Cluster Output }\\n other { Cluster Outputs }\\n}\", \"harvesterhci.io.logging.flow\":\"{count, plural,\\n one { Flow }\\n other { Flows }\\n}\", \"harvesterhci.io.logging.output\":\"{count, plural,\\n one { Output }\\n other { Outputs }\\n}\", \"harvesterhci.io.storage\":\"{count, plural,\\n one { Storage Class }\\n other { Storage Classes }\\n}\", \"devices.harvesterhci.io.pcidevice\":\"{count, plural,\\n one { PCI Device }\\n other { PCI Devices }\\n}\", \"network.harvesterhci.io.clusternetwork\":\"{count, plural,\\n one { Cluster Network }\\n other { Cluster Networks }\\n}\", \"network.harvesterhci.io.hostnetworkconfig\":\"{count, plural,\\n one { Host Network }\\n other { Host Networks }\\n}\", \"harvesterhci.io.addon\":\"{count, plural,\\n one { Add-on }\\n other { Add-ons }\\n}\", \"devices.harvesterhci.io.sriovnetworkdevice\":\"{count, plural,\\n one { SR-IOV Network Device }\\n other { SR-IOV Network Devices }\\n}\", \"devices.harvesterhci.io.sriovgpudevice\":\"{count, plural,\\n one { SR-IOV GPU Device }\\n other { SR-IOV GPU Devices }\\n}\", \"devices.harvesterhci.io.vgpudevice\":\"{count, plural,\\n one { vGPU Device }\\n other { vGPU Devices }\\n}\", \"devices.harvesterhci.io.migconfiguration\":\"{count, plural,\\n one { vGPU MIG Configuration }\\n other { vGPU MIG Configurations }\\n}\", \"harvesterhci.io.secret\":\"{count, plural,\\n one { Secret }\\n other { Secrets }\\n}\", \"harvesterhci.io.blockdevice\":\"{count, plural,\\n one { Disk }\\n other { Disks }\\n}\", \"loadbalancer.harvesterhci.io.loadbalancer\":\"{count, plural,\\n one { Load Balancer }\\n other { Load Balancers }\\n}\", \"loadbalancer.harvesterhci.io.ippool\":\"{count, plural,\\n one { IP Pool }\\n other { IP Pools }\\n}\", \"migration.harvesterhci.io.openstacksource\":\"{count, plural,\\n one { OpenStack Source }\\n other { OpenStack Sources }\\n}\", \"migration.harvesterhci.io.vmwaresource\":\"{count, plural,\\n one { VMware Source }\\n other { VMware Sources }\\n}\", \"migration.harvesterhci.io.ovasource\":\"{count, plural,\\n one { OVA Source }\\n other { OVA Sources }\\n}\", \"migration.harvesterhci.io.virtualmachineimport\":\"{count, plural,\\n one { Virtual Machine Import }\\n other { Virtual Machine Imports }\\n}\", \"forklift.konveyor.io.provider\":\"{count, plural,\\n one { Provider }\\n other { Providers }\\n}\", \"forklift.konveyor.io.networkmap\":\"{count, plural,\\n one { Network Map }\\n other { Network Maps }\\n}\", \"forklift.konveyor.io.storagemap\":\"{count, plural,\\n one { Storage Map }\\n other { Storage Maps }\\n}\", \"forklift.konveyor.io.plan\":\"{count, plural,\\n one { Migration Plan }\\n other { Migration Plans }\\n}\", \"forklift.konveyor.io.migration\":\"{count, plural,\\n one { Migration }\\n other { Migrations }\\n}\"})})];\nmodule.exports = doc.length <= 1 ? doc[0] : doc;"],"names":["doc","module","exports","length"],"sourceRoot":""}
\ No newline at end of file
diff --git a/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.460.js.map b/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.460.js.map
index 86b1dfb7..99911a7e 100644
--- a/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.460.js.map
+++ b/extensions/harvester/1.9.0-rc2/plugin/harvester-1.9.0-rc2.umd.min.460.js.map
@@ -1 +1 @@
-{"version":3,"file":"harvester-1.9.0-rc2.umd.min.460.js","mappings":"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","sources":["webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/Resource/Detail/FetchLoader/composables.ts","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/PopoverCard.vue?1622","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/PopoverCard.vue","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/PopoverCard.vue?f36f","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/composables/useInterval.ts","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/AutoscalerCard.vue?5e85","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/AutoscalerCard.vue","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/AutoscalerCard.vue?2bd5","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/formatter/Autoscaler.vue?5e66","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/formatter/Autoscaler.vue","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/formatter/Autoscaler.vue?24ef","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/AutoscalerCard.vue?b60e","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/PopoverCard.vue?95f0","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/formatter/Autoscaler.vue?8502","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/AutoscalerCard.vue?f0cf","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/PopoverCard.vue?89d2","webpack://harvester-1.9.0-rc2/../../node_modules/@rancher/shell/components/formatter/Autoscaler.vue?22b8"],"sourcesContent":["import { computed, ref, toValue } from 'vue';\n\nexport const useFetch = (fetch: () => Promise) => {\n const loading = ref(true);\n const refreshing = ref(false);\n const data = ref();\n const error = ref();\n\n const load = async() => {\n try {\n loading.value = true;\n\n data.value = toValue(await fetch());\n } catch (ex) {\n error.value = ex;\n console.error('Error fetching data', ex); // eslint-disable-line no-console\n } finally {\n loading.value = false;\n }\n };\n\n const refresh = async() => {\n if (loading.value) {\n return;\n }\n\n refreshing.value = true;\n await load();\n refreshing.value = false;\n };\n\n load();\n\n return computed(() => ({\n loading: loading.value,\n data: data.value,\n error: error.value,\n refresh,\n refreshing: refreshing.value\n }));\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, withCtx as _withCtx, createVNode as _createVNode, resolveComponent as _resolveComponent, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nimport Card from '@shell/components/Resource/Detail/Card/index.vue';\nimport { ref, watch } from 'vue';\nimport {\n DEFAULT_FOCUS_TRAP_OPTS,\n useWatcherBasedSetupFocusTrapWithDestroyIncluded\n} from '@shell/composables/focusTrap';\nimport RcButton from '@components/RcButton/RcButton.vue';\n\nexport interface Props {\n cardTitle: string;\n fallbackFocus?: string;\n showPopoverAriaLabel?: string;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PopoverCard',\n props: {\n cardTitle: {},\n fallbackFocus: { default: 'body' },\n showPopoverAriaLabel: { default: 'Show more' }\n },\n setup(__props: any) {\n\nconst props = __props;\nconst card = ref(null);\nconst popoverContainer = ref(null);\nconst showPopover = ref(false);\nconst focusOpen = ref(false);\n\n// Set focus trap when card opened using keyboard\nwatch(\n () => card.value,\n (neu) => {\n if (neu && focusOpen.value) {\n const opts = {\n ...DEFAULT_FOCUS_TRAP_OPTS,\n fallbackFocus: props.fallbackFocus,\n setReturnFocus: () => '.focus-button'\n };\n\n useWatcherBasedSetupFocusTrapWithDestroyIncluded(() => showPopover.value, '#popover-card', opts);\n }\n }\n);\n\nreturn (_ctx: any,_cache: any) => {\n const _component_v_dropdown = _resolveComponent(\"v-dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"popover-card-base\", {open: showPopover.value}]),\n onMouseleave: _cache[2] || (_cache[2] = ($event: any) => {showPopover.value=false; focusOpen.value=false}),\n onKeydown: _cache[3] || (_cache[3] = _withKeys(($event: any) => {showPopover.value=false; focusOpen.value=false}, [\"escape\"]))\n }, [\n _createVNode(_component_v_dropdown, {\n triggers: [],\n container: popoverContainer.value,\n shown: showPopover.value,\n placement: \"bottom-start\"\n }, {\n popper: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"card\", {}, () => [\n _createVNode(Card, {\n id: \"popover-card\",\n ref_key: \"card\",\n ref: card,\n class: \"popover-card\",\n title: props.cardTitle\n }, {\n \"heading-action\": _withCtx(() => [\n _renderSlot(_ctx.$slots, \"heading-action\", {\n close: () => {showPopover.value=false; focusOpen.value=false;}\n })\n ]),\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"card-body\")\n ]),\n _: 3\n }, 8, [\"title\"])\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"popover-card-target\",\n onMouseenter: _cache[1] || (_cache[1] = ($event: any) => (showPopover.value=true))\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createVNode(RcButton, {\n variant: \"ghost\",\n class: \"focus-button\",\n \"aria-label\": props.showPopoverAriaLabel,\n \"aria-haspopup\": \"true\",\n \"aria-expanded\": showPopover.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => {showPopover.value=true; focusOpen.value=true;})\n }, {\n default: _withCtx(() => [...(_cache[4] || (_cache[4] = [\n _createElementVNode(\"i\", { class: \"icon icon-chevron-down icon-sm\" }, null, -1)\n ]))]),\n _: 1\n }, 8, [\"aria-label\", \"aria-expanded\"]),\n _createElementVNode(\"div\", {\n ref_key: \"popoverContainer\",\n ref: popoverContainer,\n class: \"popover-card-container\"\n }, null, 512)\n ], 32)\n ]),\n _: 3\n }, 8, [\"container\", \"shown\"])\n ], 34))\n}\n}\n\n})","\n\n\n\n\n \n
\n \n\n \n \n \n \n {showPopover=false; focusOpen=false;}\"\n />\n \n \n \n \n \n \n
\n \n\n\n","import script from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PopoverCard.vue?vue&type=style&index=0&id=478de802&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-478de802\"]])\n\nexport default __exports__","import { onBeforeUnmount, onMounted, ref } from 'vue';\n\nexport const useInterval = (fn: Function, delay: number) => {\n const interval = ref(null);\n\n onMounted(() => {\n interval.value = setInterval(fn, delay);\n });\n\n onBeforeUnmount(() => {\n if (interval.value) {\n clearInterval(interval.value);\n }\n });\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"autoscaler-card\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"loading\"\n}\nconst _hoisted_3 = [\"alt\"]\nconst _hoisted_4 = {\n key: 1,\n class: \"details\"\n}\nconst _hoisted_5 = {\n key: 0,\n class: \"label text-deemphasized\"\n}\nconst _hoisted_6 = { key: 1 }\nconst _hoisted_7 = {\n key: 2,\n class: \"value\"\n}\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = {\n key: 2,\n class: \"text-warning\"\n}\n\nimport { computed, ComputedRef } from 'vue';\nimport { useFetch } from '@shell/components/Resource/Detail/FetchLoader/composables';\nimport { useInterval } from '@shell/composables/useInterval';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\n\nexport interface Props {\n value: any;\n}\n\nexport interface Detail {\n label: string;\n value?: string | { component: any; props: any };\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AutoscalerCard',\n props: {\n value: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst fetch = useFetch(async() => {\n return await props.value.loadAutoscalerDetails();\n});\n\n// The backend only updates the configmap every 10 seconds and we don't cache the configmap in the stores\nuseInterval(() => fetch.value.refresh(), 10000);\n\nconst details: ComputedRef = computed(() => fetch.value.data);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(fetch).loading && !_unref(fetch).refreshing)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: \"icon icon-lg icon-spinner icon-spin\",\n alt: _unref(i18n).t('autoscaler.card.loadingAlt')\n }, null, 8, _hoisted_3)\n ]))\n : (_unref(fetch).data)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(details.value, (detail) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: detail.label,\n class: \"detail\"\n }, [\n (detail.value)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_5, _toDisplayString(detail.label), 1))\n : (detail.label)\n ? (_openBlock(), _createElementBlock(\"h5\", _hoisted_6, _toDisplayString(detail.label), 1))\n : _createCommentVNode(\"\", true),\n (detail.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (typeof detail.value === 'object')\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(detail.value.component), _mergeProps({\n key: 0,\n ref_for: true\n }, detail.value.props), null, 16))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, _toDisplayString(detail.value), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_unref(i18n).t('autoscaler.card.loadingError')), 1))\n ]))\n}\n}\n\n})","\n\n\n \n
\n \n
\n\n
\n
\n
\n {{ detail.label }}\n \n
\n {{ detail.label }}\n \n
\n \n {{ detail.value }} \n
\n
\n
\n
\n {{ i18n.t('autoscaler.card.loadingError') }}\n
\n
\n \n\n\n","import script from \"./AutoscalerCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AutoscalerCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AutoscalerCard.vue?vue&type=style&index=0&id=3d700c69&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3d700c69\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createSlots as _createSlots, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 1,\n class: \"text-muted autoscaler\"\n}\n\nimport PopoverCard from '@shell/components/PopoverCard.vue';\nimport { computed } from 'vue';\nimport RcButton from '@components/RcButton/RcButton.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\nimport AutoscalerCard from '@shell/components/AutoscalerCard.vue';\n\nexport interface Props {\n value: string | boolean;\n row: any;\n}\n\nexport interface Detail {\n label: string;\n value?: string | { component: any; props: any };\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Autoscaler',\n props: {\n value: { type: [String, Boolean], default: true },\n row: {}\n },\n setup(__props: any) {\n\nconst props = __props;\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst checked = computed(() => props.value === true || props.value === 'true');\nconst actionIcon = computed(() => props.row.provCluster.isAutoscalerPaused ? 'icon-play' : 'icon-pause');\nconst actionText = computed(() => props.row.provCluster.isAutoscalerPaused ? i18n.t('autoscaler.card.resume') : i18n.t('autoscaler.card.pause'));\nconst stopPropagation = (event: Event) => {\n // This is to prevent click events from getting to the table row which ends up selecting the row\n event.stopPropagation();\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (checked.value)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"autoscaler\",\n onClick: stopPropagation\n }, [\n _createVNode(PopoverCard, {\n \"card-title\": _unref(i18n).t('autoscaler.card.title'),\n \"fallback-focus\": \".autoscaler .action\"\n }, _createSlots({\n \"card-body\": _withCtx(() => [\n _createVNode(AutoscalerCard, {\n value: props.row.provCluster\n }, null, 8, [\"value\"])\n ]),\n default: _withCtx(() => [\n _cache[0] || (_cache[0] = _createElementVNode(\"i\", { class: \"icon icon-checkmark\" }, null, -1))\n ]),\n _: 2\n }, [\n (props.row.canExplore)\n ? {\n name: \"heading-action\",\n fn: _withCtx(({close}) => [\n (__props.row.provCluster.canPauseResumeAutoscaler)\n ? (_openBlock(), _createBlock(RcButton, {\n key: 0,\n variant: \"secondary\",\n size: \"small\",\n class: \"action\",\n onClick: () => {props.row.toggleAutoscalerRunner(); close()}\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`icon ${actionIcon.value} icon-sm`)\n }, null, 2),\n _createTextVNode(\" \" + _toDisplayString(actionText.value), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"card-title\"])\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_1, \" — \"))\n}\n}\n\n})","\n\n\n \n \n \n \n {props.row.toggleAutoscalerRunner(); close()}\"\n >\n \n {{ actionText }}\n \n \n \n \n \n \n \n \n —\n \n \n\n\n","import script from \"./Autoscaler.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Autoscaler.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Autoscaler.vue?vue&type=style&index=0&id=408f6f56&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-408f6f56\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".autoscaler-card[data-v-3d700c69]{width:240px}.autoscaler-card .loading[data-v-3d700c69]{display:flex;justify-content:center}.autoscaler-card .detail[data-v-3d700c69]{display:flex;white-space:nowrap;width:244px}.autoscaler-card .detail[data-v-3d700c69]:not(:last-of-type){margin-bottom:8px}.autoscaler-card .detail .value[data-v-3d700c69],.autoscaler-card .detail label[data-v-3d700c69]{width:50%}.autoscaler-card h5[data-v-3d700c69]{margin-bottom:0;margin-top:12px;font-size:14px;font-weight:600}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".popover-card-base[data-v-478de802]{position:relative;width:100%}.popover-card-base .popover-card[data-v-478de802]{border:none}.popover-card-base .display-container[data-v-478de802]{position:absolute;left:0;right:0;top:0;bottom:0}.popover-card-base .display[data-v-478de802]{display:inline-flex;max-width:100%}.popover-card-base .display a[data-v-478de802]{flex:1}.popover-card-base .popover-card-target[data-v-478de802]{height:17px;display:inline-block}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]{margin-left:4px;margin-right:2px;padding:0;width:0;height:auto;min-height:auto;overflow:hidden;border-width:0}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]:focus{width:auto;border-width:1px}.popover-card-base .popover-card-base[data-v-478de802]{border:none}.popover-card-base .popover-card-container[data-v-478de802]{position:absolute;height:10px;bottom:-10px}.popover-card-base.open .popover-card-container[data-v-478de802]{width:100%}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link{padding:0;min-height:auto;line-height:normal}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link:hover{background:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper{border-radius:6px;box-shadow:4px 4px 8px 0 rgba(0,0,0,.04)}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper .v-popper__arrow-container{display:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner{overflow:initial}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner,.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner>div>.dropdownTarget{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".autoscaler[data-v-408f6f56] .heading{height:24px}.autoscaler[data-v-408f6f56] .heading .title{font-size:16px;font-weight:600;line-height:24px}.autoscaler[data-v-408f6f56] button.btn.action{line-height:15px;font-size:12px;height:24px;min-height:auto;padding:0 8px}.autoscaler[data-v-408f6f56] button.btn.action i{margin-right:8px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PopoverCard.vue?vue&type=style&index=0&id=478de802&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-478de802\"]])\n\nexport default __exports__","import { onBeforeUnmount, onMounted, ref } from 'vue';\n\nexport const useInterval = (fn: Function, delay: number) => {\n const interval = ref(null);\n\n onMounted(() => {\n interval.value = setInterval(fn, delay);\n });\n\n onBeforeUnmount(() => {\n if (interval.value) {\n clearInterval(interval.value);\n }\n });\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"autoscaler-card\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"loading\"\n}\nconst _hoisted_3 = [\"alt\"]\nconst _hoisted_4 = {\n key: 1,\n class: \"details\"\n}\nconst _hoisted_5 = {\n key: 0,\n class: \"label text-deemphasized\"\n}\nconst _hoisted_6 = { key: 1 }\nconst _hoisted_7 = {\n key: 2,\n class: \"value\"\n}\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = {\n key: 2,\n class: \"text-warning\"\n}\n\nimport { computed, ComputedRef } from 'vue';\nimport { useFetch } from '@shell/components/Resource/Detail/FetchLoader/composables';\nimport { useInterval } from '@shell/composables/useInterval';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\n\nexport interface Props {\n value: any;\n}\n\nexport interface Detail {\n label: string;\n value?: string | { component: any; props: any };\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AutoscalerCard',\n props: {\n value: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst fetch = useFetch(async() => {\n return await props.value.loadAutoscalerDetails();\n});\n\n// The backend only updates the configmap every 10 seconds and we don't cache the configmap in the stores\nuseInterval(() => fetch.value.refresh(), 10000);\n\nconst details: ComputedRef = computed(() => fetch.value.data);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(fetch).loading && !_unref(fetch).refreshing)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: \"icon icon-lg icon-spinner icon-spin\",\n alt: _unref(i18n).t('autoscaler.card.loadingAlt')\n }, null, 8, _hoisted_3)\n ]))\n : (_unref(fetch).data)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(details.value, (detail) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: detail.label,\n class: \"detail\"\n }, [\n (detail.value)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_5, _toDisplayString(detail.label), 1))\n : (detail.label)\n ? (_openBlock(), _createElementBlock(\"h5\", _hoisted_6, _toDisplayString(detail.label), 1))\n : _createCommentVNode(\"\", true),\n (detail.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (typeof detail.value === 'object')\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(detail.value.component), _mergeProps({\n key: 0,\n ref_for: true\n }, detail.value.props), null, 16))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, _toDisplayString(detail.value), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_unref(i18n).t('autoscaler.card.loadingError')), 1))\n ]))\n}\n}\n\n})","\n\n\n \n
\n \n
\n\n
\n
\n
\n {{ detail.label }}\n \n
\n {{ detail.label }}\n \n
\n \n {{ detail.value }} \n
\n
\n
\n
\n {{ i18n.t('autoscaler.card.loadingError') }}\n
\n
\n \n\n\n","import script from \"./AutoscalerCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AutoscalerCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AutoscalerCard.vue?vue&type=style&index=0&id=3d700c69&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3d700c69\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createSlots as _createSlots, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 1,\n class: \"text-muted autoscaler\"\n}\n\nimport PopoverCard from '@shell/components/PopoverCard.vue';\nimport { computed } from 'vue';\nimport RcButton from '@components/RcButton/RcButton.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\nimport AutoscalerCard from '@shell/components/AutoscalerCard.vue';\n\nexport interface Props {\n value: string | boolean;\n row: any;\n}\n\nexport interface Detail {\n label: string;\n value?: string | { component: any; props: any };\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Autoscaler',\n props: {\n value: { type: [String, Boolean], default: true },\n row: {}\n },\n setup(__props: any) {\n\nconst props = __props;\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst checked = computed(() => props.value === true || props.value === 'true');\nconst actionIcon = computed(() => props.row.provCluster.isAutoscalerPaused ? 'icon-play' : 'icon-pause');\nconst actionText = computed(() => props.row.provCluster.isAutoscalerPaused ? i18n.t('autoscaler.card.resume') : i18n.t('autoscaler.card.pause'));\nconst stopPropagation = (event: Event) => {\n // This is to prevent click events from getting to the table row which ends up selecting the row\n event.stopPropagation();\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (checked.value)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"autoscaler\",\n onClick: stopPropagation\n }, [\n _createVNode(PopoverCard, {\n \"card-title\": _unref(i18n).t('autoscaler.card.title'),\n \"fallback-focus\": \".autoscaler .action\"\n }, _createSlots({\n \"card-body\": _withCtx(() => [\n _createVNode(AutoscalerCard, {\n value: props.row.provCluster\n }, null, 8, [\"value\"])\n ]),\n default: _withCtx(() => [\n _cache[0] || (_cache[0] = _createElementVNode(\"i\", { class: \"icon icon-checkmark\" }, null, -1))\n ]),\n _: 2\n }, [\n (props.row.canExplore)\n ? {\n name: \"heading-action\",\n fn: _withCtx(({close}) => [\n (__props.row.provCluster.canPauseResumeAutoscaler)\n ? (_openBlock(), _createBlock(RcButton, {\n key: 0,\n variant: \"secondary\",\n size: \"small\",\n class: \"action\",\n onClick: () => {props.row.toggleAutoscalerRunner(); close()}\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`icon ${actionIcon.value} icon-sm`)\n }, null, 2),\n _createTextVNode(\" \" + _toDisplayString(actionText.value), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"card-title\"])\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_1, \" — \"))\n}\n}\n\n})","\n\n\n \n \n \n \n {props.row.toggleAutoscalerRunner(); close()}\"\n >\n \n {{ actionText }}\n \n \n \n \n \n \n \n \n —\n \n \n\n\n","import script from \"./Autoscaler.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Autoscaler.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Autoscaler.vue?vue&type=style&index=0&id=408f6f56&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-408f6f56\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".autoscaler-card[data-v-3d700c69]{width:240px}.autoscaler-card .loading[data-v-3d700c69]{display:flex;justify-content:center}.autoscaler-card .detail[data-v-3d700c69]{display:flex;white-space:nowrap;width:244px}.autoscaler-card .detail[data-v-3d700c69]:not(:last-of-type){margin-bottom:8px}.autoscaler-card .detail .value[data-v-3d700c69],.autoscaler-card .detail label[data-v-3d700c69]{width:50%}.autoscaler-card h5[data-v-3d700c69]{margin-bottom:0;margin-top:12px;font-size:14px;font-weight:600}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".popover-card-base[data-v-478de802]{position:relative;width:100%}.popover-card-base .popover-card[data-v-478de802]{border:none}.popover-card-base .display-container[data-v-478de802]{position:absolute;left:0;right:0;top:0;bottom:0}.popover-card-base .display[data-v-478de802]{display:inline-flex;max-width:100%}.popover-card-base .display a[data-v-478de802]{flex:1}.popover-card-base .popover-card-target[data-v-478de802]{height:17px;display:inline-block}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]{margin-left:4px;margin-right:2px;padding:0;width:0;height:auto;min-height:auto;overflow:hidden;border-width:0}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]:focus{width:auto;border-width:1px}.popover-card-base .popover-card-base[data-v-478de802]{border:none}.popover-card-base .popover-card-container[data-v-478de802]{position:absolute;height:10px;bottom:-10px}.popover-card-base.open .popover-card-container[data-v-478de802]{width:100%}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link{padding:0;min-height:auto;line-height:normal}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link:hover{background:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper{border-radius:6px;box-shadow:4px 4px 8px 0 rgba(0,0,0,.04)}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper .v-popper__arrow-container{display:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner{overflow:initial}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner,.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner>div>.dropdownTarget{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".autoscaler[data-v-408f6f56] .heading{height:24px}.autoscaler[data-v-408f6f56] .heading .title{font-size:16px;font-weight:600;line-height:24px}.autoscaler[data-v-408f6f56] button.btn.action{line-height:15px;font-size:12px;height:24px;min-height:auto;padding:0 8px}.autoscaler[data-v-408f6f56] button.btn.action i{margin-right:8px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./AccessCredentialsUsers.vue?vue&type=template&id=a9540abc\"\nimport script from \"./AccessCredentialsUsers.vue?vue&type=script&lang=js\"\nexport * from \"./AccessCredentialsUsers.vue?vue&type=script&lang=js\"\n\nimport \"./AccessCredentialsUsers.vue?vue&type=style&index=0&id=a9540abc&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n\n
\n
\n \n \n \n \n \n {{ headerFor(row.source) }}\n \n \n \n \n
\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.accessCredentials.resetPwd.label') }}\n \n\n \n {{ t('harvester.virtualMachine.accessCredentials.injectSSH.label') }}\n \n
\n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=61977bc4&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=61977bc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61977bc4\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./basicAuth.vue?vue&type=template&id=7d19b7bd&scoped=true\"\nimport script from \"./basicAuth.vue?vue&type=script&lang=js\"\nexport * from \"./basicAuth.vue?vue&type=script&lang=js\"\n\nimport \"./basicAuth.vue?vue&type=style&index=0&id=7d19b7bd&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7d19b7bd\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./sshkey.vue?vue&type=template&id=366508df\"\nimport script from \"./sshkey.vue?vue&type=script&lang=js\"\nexport * from \"./sshkey.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
{{ t(`harvester.virtualMachine.cloudConfig.${type}.title`) }} \n
\n \n
\n\n
\n\n
\n \n
\n
\n \n\n\n","import { render } from \"./DataTemplate.vue?vue&type=template&id=1c87e5a2&scoped=true\"\nimport script from \"./DataTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./DataTemplate.vue?vue&type=script&lang=js\"\n\nimport \"./DataTemplate.vue?vue&type=style&index=0&id=1c87e5a2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c87e5a2\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.virtualMachine.cloudConfig.title') }}\n \n\n
\n \n
\n\n
\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.cloudConfig.createTemplateTitle', { name: createTypeLable }) }}\n \n\n \n {}\"\n />\n\n \n \n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=9c8ae0f0&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9c8ae0f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9c8ae0f0\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n","import { render } from \"./VirtualMachineCpuMemory.vue?vue&type=template&id=6e1177af\"\nimport script from \"./VirtualMachineCpuMemory.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineCpuMemory.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n","import { render } from \"./base.vue?vue&type=template&id=738694f6\"\nimport script from \"./base.vue?vue&type=script&lang=js\"\nexport * from \"./base.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n {{ t('harvester.virtualMachine.network.title') }}\n \n \n \n \n \n {{ t('harvester.virtualMachine.hotUnplug.detachNIC.actionLabel') }}\n \n \n \n \n\n
\n {{ t('harvester.virtualMachine.network.addNetwork') }}\n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=88b01cc2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=88b01cc2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-88b01cc2\"]])\n\nexport default __exports__","\n\n\n \n \n\n \n \n {{ t('harvester.virtualMachine.sshTitle') }}\n \n\n \n {}\"\n />\n\n \n \n \n
\n \n","import { render } from \"./VirtualMachineSSHKey.vue?vue&type=template&id=370eb114\"\nimport script from \"./VirtualMachineSSHKey.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineSSHKey.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n \n
\n \n \n {{ t('harvester.virtualMachine.volume.edit') }} {{ headerFor(volume.source) }}\n \n\n \n \n \n \n \n\n \n {{ headerFor(volume.source, !!volume?.volumeBackups) }}\n \n \n
\n \n \n
\n {{ t(getVolumeHotplugActionLabel(volume)) }}\n \n
\n \n \n
\n\n \n
\n \n \n \n\n \n \n \n
\n\n
\n bootOrder: {{ i + 1 }}\n
\n
\n\n \n \n \n \n
\n \n
\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.volume.addVolume') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.addExistingVolume') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.addVmImage') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.addContainer') }}\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.volume.unmount.title') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.unmount.message') }} \n \n\n \n \n \n {{ t('generic.no') }}\n \n\n \n {{ t('generic.yes') }}\n \n
\n \n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=4b4640ac&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4b4640ac&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4640ac\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./container.vue?vue&type=template&id=f22885b6\"\nimport script from \"./container.vue?vue&type=script&lang=js\"\nexport * from \"./container.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n","import { render } from \"./existing.vue?vue&type=template&id=b525e208\"\nimport script from \"./existing.vue?vue&type=script&lang=js\"\nexport * from \"./existing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n","import { render } from \"./vmImage.vue?vue&type=template&id=94caea68\"\nimport script from \"./vmImage.vue?vue&type=script&lang=js\"\nexport * from \"./vmImage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n","import { render } from \"./volume.vue?vue&type=template&id=d04f87e6\"\nimport script from \"./volume.vue?vue&type=script&lang=js\"\nexport * from \"./volume.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm__credentials-users .hasUsers.labeled-select.edit.taggable .labeled-tooltip .icon.status-icon{top:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".volume-source[data-v-61977bc4]{position:relative}.remove-vol[data-v-61977bc4]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".action[data-v-7d19b7bd]{display:flex;flex-direction:row-reverse}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-1c87e5a2] .resource-yaml{flex:1;display:flex;flex-direction:column}[data-v-1c87e5a2] .resource-yaml .yaml-editor{flex:1;min-height:200px}[data-v-1c87e5a2] .resource-yaml .yaml-editor .code-mirror .CodeMirror{min-height:200px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".yaml[data-v-9c8ae0f0]{height:350px;overflow:auto}[data-v-9c8ae0f0] .resource-yaml{flex:1;display:flex;flex-direction:column}[data-v-9c8ae0f0] .resource-yaml .yaml-editor{flex:1;min-height:350px}[data-v-9c8ae0f0] .resource-yaml .yaml-editor .code-mirror .CodeMirror{min-height:350px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box-title[data-v-88b01cc2]{display:flex;justify-content:space-between;align-items:center}.box-title h3[data-v-88b01cc2]{margin-bottom:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box-title[data-v-4b4640ac]{display:flex;justify-content:space-between;align-items:center}.box-title h3[data-v-4b4640ac]{margin-bottom:0}.title[data-v-4b4640ac]{display:flex;align-items:center}.title .state[data-v-4b4640ac]{font-size:16px}.bootOrder[data-v-4b4640ac]{display:flex;align-items:center}.buttons[data-v-4b4640ac]{width:100%;display:flex;justify-content:flex-end}.volume-status[data-v-4b4640ac]:first-letter{text-transform:uppercase}.resource-external[data-v-4b4640ac]{display:flex;justify-content:center;align-items:center}.banner[data-v-4b4640ac]{margin:10px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { findBy, isArray } from '@shell/utils/array';\n\nexport default {\n computed: {\n conditions() {\n return this.value?.conditions || [];\n },\n\n readyCondition() {\n if (isArray(this.conditions)) {\n return findBy(this.conditions, 'type', 'Ready') || {};\n } else {\n return this.conditions.Ready;\n }\n },\n\n schedulableCondition() {\n if (isArray(this.conditions)) {\n return findBy(this.conditions, 'type', 'Schedulable') || {};\n } else {\n return this.conditions.Schedulable;\n }\n },\n },\n};\n","const AUTH_ERROR_CODES = [401, 403, 404];\n\nexport function getLoginAwareErrors(err, message = '') {\n const errors = Array.isArray(err) ? err : (err ? [err] : []);\n\n if (!errors.length) {\n return [];\n }\n\n const generic = message;\n\n if (errors.some((e) => AUTH_ERROR_CODES.includes(e?._status || e?.response?.status))) {\n return [generic];\n }\n\n const msgs = errors\n .map((e) => (typeof e === 'string' ? e : (e?.message || e?._statusText || '')))\n .filter(Boolean);\n\n return msgs.length ? msgs : [generic];\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./AccessCredentialsUsers.vue?vue&type=template&id=a9540abc\"\nimport script from \"./AccessCredentialsUsers.vue?vue&type=script&lang=js\"\nexport * from \"./AccessCredentialsUsers.vue?vue&type=script&lang=js\"\n\nimport \"./AccessCredentialsUsers.vue?vue&type=style&index=0&id=a9540abc&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n\n
\n
\n \n \n \n \n \n {{ headerFor(row.source) }}\n \n \n \n \n
\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.accessCredentials.resetPwd.label') }}\n \n\n \n {{ t('harvester.virtualMachine.accessCredentials.injectSSH.label') }}\n \n
\n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=61977bc4&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=61977bc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61977bc4\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./basicAuth.vue?vue&type=template&id=7d19b7bd&scoped=true\"\nimport script from \"./basicAuth.vue?vue&type=script&lang=js\"\nexport * from \"./basicAuth.vue?vue&type=script&lang=js\"\n\nimport \"./basicAuth.vue?vue&type=style&index=0&id=7d19b7bd&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7d19b7bd\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./sshkey.vue?vue&type=template&id=366508df\"\nimport script from \"./sshkey.vue?vue&type=script&lang=js\"\nexport * from \"./sshkey.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
{{ t(`harvester.virtualMachine.cloudConfig.${type}.title`) }} \n
\n \n
\n\n
\n\n
\n \n
\n
\n \n\n\n","import { render } from \"./DataTemplate.vue?vue&type=template&id=1c87e5a2&scoped=true\"\nimport script from \"./DataTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./DataTemplate.vue?vue&type=script&lang=js\"\n\nimport \"./DataTemplate.vue?vue&type=style&index=0&id=1c87e5a2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c87e5a2\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.virtualMachine.cloudConfig.title') }}\n \n\n
\n \n
\n\n
\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.cloudConfig.createTemplateTitle', { name: createTypeLable }) }}\n \n\n \n {}\"\n />\n\n \n \n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=9c8ae0f0&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9c8ae0f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9c8ae0f0\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n","import { render } from \"./VirtualMachineCpuMemory.vue?vue&type=template&id=6e1177af\"\nimport script from \"./VirtualMachineCpuMemory.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineCpuMemory.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n","import { render } from \"./base.vue?vue&type=template&id=738694f6\"\nimport script from \"./base.vue?vue&type=script&lang=js\"\nexport * from \"./base.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n {{ t('harvester.virtualMachine.network.title') }}\n \n \n \n \n \n {{ t('harvester.virtualMachine.hotUnplug.detachNIC.actionLabel') }}\n \n \n \n \n\n
\n {{ t('harvester.virtualMachine.network.addNetwork') }}\n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=88b01cc2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=88b01cc2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-88b01cc2\"]])\n\nexport default __exports__","\n\n\n \n \n\n \n \n {{ t('harvester.virtualMachine.sshTitle') }}\n \n\n \n {}\"\n />\n\n \n \n \n
\n \n","import { render } from \"./VirtualMachineSSHKey.vue?vue&type=template&id=370eb114\"\nimport script from \"./VirtualMachineSSHKey.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineSSHKey.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n \n
\n \n \n {{ t('harvester.virtualMachine.volume.edit') }} {{ headerFor(volume.source) }}\n \n\n \n \n \n \n \n\n \n {{ headerFor(volume.source, !!volume?.volumeBackups) }}\n \n \n
\n \n \n
\n {{ t(getVolumeHotplugActionLabel(volume)) }}\n \n
\n \n \n
\n\n \n
\n \n \n \n\n \n \n \n
\n\n
\n bootOrder: {{ i + 1 }}\n
\n
\n\n \n \n \n \n
\n \n
\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.volume.addVolume') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.addExistingVolume') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.addVmImage') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.addContainer') }}\n \n
\n\n
\n \n {{ t('harvester.virtualMachine.volume.unmount.title') }}\n \n\n \n {{ t('harvester.virtualMachine.volume.unmount.message') }} \n \n\n \n \n \n {{ t('generic.no') }}\n \n\n \n {{ t('generic.yes') }}\n \n
\n \n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=4b4640ac&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4b4640ac&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4640ac\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./container.vue?vue&type=template&id=f22885b6\"\nimport script from \"./container.vue?vue&type=script&lang=js\"\nexport * from \"./container.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n","import { render } from \"./existing.vue?vue&type=template&id=b525e208\"\nimport script from \"./existing.vue?vue&type=script&lang=js\"\nexport * from \"./existing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n","import { render } from \"./vmImage.vue?vue&type=template&id=94caea68\"\nimport script from \"./vmImage.vue?vue&type=script&lang=js\"\nexport * from \"./vmImage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n \n \n \n
\n\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n \n","import { render } from \"./volume.vue?vue&type=template&id=d04f87e6\"\nimport script from \"./volume.vue?vue&type=script&lang=js\"\nexport * from \"./volume.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm__credentials-users .hasUsers.labeled-select.edit.taggable .labeled-tooltip .icon.status-icon{top:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".volume-source[data-v-61977bc4]{position:relative}.remove-vol[data-v-61977bc4]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".action[data-v-7d19b7bd]{display:flex;flex-direction:row-reverse}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-1c87e5a2] .resource-yaml{flex:1;display:flex;flex-direction:column}[data-v-1c87e5a2] .resource-yaml .yaml-editor{flex:1;min-height:200px}[data-v-1c87e5a2] .resource-yaml .yaml-editor .code-mirror .CodeMirror{min-height:200px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".yaml[data-v-9c8ae0f0]{height:350px;overflow:auto}[data-v-9c8ae0f0] .resource-yaml{flex:1;display:flex;flex-direction:column}[data-v-9c8ae0f0] .resource-yaml .yaml-editor{flex:1;min-height:350px}[data-v-9c8ae0f0] .resource-yaml .yaml-editor .code-mirror .CodeMirror{min-height:350px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box-title[data-v-88b01cc2]{display:flex;justify-content:space-between;align-items:center}.box-title h3[data-v-88b01cc2]{margin-bottom:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box-title[data-v-4b4640ac]{display:flex;justify-content:space-between;align-items:center}.box-title h3[data-v-4b4640ac]{margin-bottom:0}.title[data-v-4b4640ac]{display:flex;align-items:center}.title .state[data-v-4b4640ac]{font-size:16px}.bootOrder[data-v-4b4640ac]{display:flex;align-items:center}.buttons[data-v-4b4640ac]{width:100%;display:flex;justify-content:flex-end}.volume-status[data-v-4b4640ac]:first-letter{text-transform:uppercase}.resource-external[data-v-4b4640ac]{display:flex;justify-content:center;align-items:center}.banner[data-v-4b4640ac]{margin:10px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { findBy, isArray } from '@shell/utils/array';\n\nexport default {\n computed: {\n conditions() {\n return this.value?.conditions || [];\n },\n\n readyCondition() {\n if (isArray(this.conditions)) {\n return findBy(this.conditions, 'type', 'Ready') || {};\n } else {\n return this.conditions.Ready;\n }\n },\n\n schedulableCondition() {\n if (isArray(this.conditions)) {\n return findBy(this.conditions, 'type', 'Schedulable') || {};\n } else {\n return this.conditions.Schedulable;\n }\n },\n },\n};\n","const AUTH_ERROR_CODES = [401, 403, 404];\n\nexport function getLoginAwareErrors(err, message = '') {\n const errors = Array.isArray(err) ? err : (err ? [err] : []);\n\n if (!errors.length) {\n return [];\n }\n\n const generic = message;\n\n if (errors.some((e) => AUTH_ERROR_CODES.includes(e?._status || e?.response?.status))) {\n return [generic];\n }\n\n const msgs = errors\n .map((e) => (typeof e === 'string' ? e : (e?.message || e?._statusText || '')))\n .filter(Boolean);\n\n return msgs.length ? msgs : [generic];\n}\n","// style-loader: Adds some css to the DOM by adding a \n\n\n","import { render } from \"./FilterBySriov.vue?vue&type=template&id=f3c890e8&scoped=true\"\nimport script from \"./FilterBySriov.vue?vue&type=script&lang=js\"\nexport * from \"./FilterBySriov.vue?vue&type=script&lang=js\"\n\nimport \"./FilterBySriov.vue?vue&type=style&index=0&id=f3c890e8&lang=scss&scoped=true\"\nimport \"./FilterBySriov.vue?vue&type=style&index=1&id=f3c890e8&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f3c890e8\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n {disableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.pci.disableGroup') }}\n \n {enableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.pci.enableGroup') }}\n \n
\n
\n
\n \n \n {{ row.claimedBy }} \n — \n \n \n \n \n \n \n \n\n\n","import { render } from \"./DeviceList.vue?vue&type=template&id=e5c9bd4c&scoped=true\"\nimport script from \"./DeviceList.vue?vue&type=script&lang=js\"\nexport * from \"./DeviceList.vue?vue&type=script&lang=js\"\n\nimport \"./DeviceList.vue?vue&type=style&index=0&id=e5c9bd4c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e5c9bd4c\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n {disableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.usb.disableGroup') }}\n \n {enableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.usb.enableGroup') }}\n \n
\n
\n
\n \n \n {{ row.claimedBy }} \n — \n \n \n \n\n\n","import { render } from \"./DeviceList.vue?vue&type=template&id=e18072d0&scoped=true\"\nimport script from \"./DeviceList.vue?vue&type=script&lang=js\"\nexport * from \"./DeviceList.vue?vue&type=script&lang=js\"\n\nimport \"./DeviceList.vue?vue&type=style&index=0&id=e18072d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e18072d0\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n","import { render } from \"./VGpuDeviceList.vue?vue&type=template&id=4943a941\"\nimport script from \"./VGpuDeviceList.vue?vue&type=script&lang=js\"\nexport * from \"./VGpuDeviceList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".filter[data-v-f3c890e8]{display:inline-block}.filter .banner-item[data-v-f3c890e8]{display:inline-block;font-size:16px;margin-right:10px;padding:6px;border-radius:2px}.filter .banner-item i[data-v-f3c890e8]{cursor:pointer;vertical-align:middle}.filter-popup[data-v-f3c890e8]{width:300px}[data-v-f3c890e8] .box{display:grid;grid-template-columns:40% 40% 10%;-moz-column-gap:1.75%;column-gap:1.75%;margin-bottom:10px}.required[data-v-f3c890e8]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".filter-parent-sriov .v-popper__arrow-container{display:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".group-actions[data-v-e5c9bd4c]{display:inline}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".group-actions[data-v-e18072d0]{display:inline}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n\n\n","import { render } from \"./FilterBySriov.vue?vue&type=template&id=f3c890e8&scoped=true\"\nimport script from \"./FilterBySriov.vue?vue&type=script&lang=js\"\nexport * from \"./FilterBySriov.vue?vue&type=script&lang=js\"\n\nimport \"./FilterBySriov.vue?vue&type=style&index=0&id=f3c890e8&lang=scss&scoped=true\"\nimport \"./FilterBySriov.vue?vue&type=style&index=1&id=f3c890e8&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f3c890e8\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n {disableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.pci.disableGroup') }}\n \n {enableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.pci.enableGroup') }}\n \n
\n
\n
\n \n \n {{ row.claimedBy }} \n — \n \n \n \n \n \n \n \n\n\n","import { render } from \"./DeviceList.vue?vue&type=template&id=e5c9bd4c&scoped=true\"\nimport script from \"./DeviceList.vue?vue&type=script&lang=js\"\nexport * from \"./DeviceList.vue?vue&type=script&lang=js\"\n\nimport \"./DeviceList.vue?vue&type=style&index=0&id=e5c9bd4c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e5c9bd4c\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n {disableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.usb.disableGroup') }}\n \n {enableGroup(group.rows); e.target.blur()}\"\n >\n {{ t('harvester.usb.enableGroup') }}\n \n
\n
\n
\n \n \n {{ row.claimedBy }} \n — \n \n \n \n\n\n","import { render } from \"./DeviceList.vue?vue&type=template&id=e18072d0&scoped=true\"\nimport script from \"./DeviceList.vue?vue&type=script&lang=js\"\nexport * from \"./DeviceList.vue?vue&type=script&lang=js\"\n\nimport \"./DeviceList.vue?vue&type=style&index=0&id=e18072d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e18072d0\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n","import { render } from \"./VGpuDeviceList.vue?vue&type=template&id=4943a941\"\nimport script from \"./VGpuDeviceList.vue?vue&type=script&lang=js\"\nexport * from \"./VGpuDeviceList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".filter[data-v-f3c890e8]{display:inline-block}.filter .banner-item[data-v-f3c890e8]{display:inline-block;font-size:16px;margin-right:10px;padding:6px;border-radius:2px}.filter .banner-item i[data-v-f3c890e8]{cursor:pointer;vertical-align:middle}.filter-popup[data-v-f3c890e8]{width:300px}[data-v-f3c890e8] .box{display:grid;grid-template-columns:40% 40% 10%;-moz-column-gap:1.75%;column-gap:1.75%;margin-bottom:10px}.required[data-v-f3c890e8]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".filter-parent-sriov .v-popper__arrow-container{display:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".group-actions[data-v-e5c9bd4c]{display:inline}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".group-actions[data-v-e18072d0]{display:inline}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./InputOrDisplay.vue?vue&type=template&id=a3d99010&scoped=true\"\nimport script from \"./InputOrDisplay.vue?vue&type=script&lang=js\"\nexport * from \"./InputOrDisplay.vue?vue&type=script&lang=js\"\n\nimport \"./InputOrDisplay.vue?vue&type=style&index=0&id=a3d99010&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a3d99010\"]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ name }}\n \n
\n\n
\n \n {{ value }}\n \n
\n
\n \n\n\n","import { render } from \"./LabelValue.vue?vue&type=template&id=357627fa&scoped=true\"\nimport script from \"./LabelValue.vue?vue&type=script&lang=js\"\nexport * from \"./LabelValue.vue?vue&type=script&lang=js\"\n\nimport \"./LabelValue.vue?vue&type=style&index=0&id=357627fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-357627fa\"]])\n\nexport default __exports__","\n\n\n \n \n {{ row.condition }} \n \n\n \n {{ row.status }} \n \n \n \n","import { render } from \"./Conditions.vue?vue&type=template&id=33f0e47c\"\nimport script from \"./Conditions.vue?vue&type=script&lang=js\"\nexport * from \"./Conditions.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n
\n \n \n {{ title }}\n \n \n \n
\n
\n
\n \n
\n
\n {{ _keyLabel }}\n \n
\n
\n {{ _valueLabel }}\n \n
\n
\n \n {{ c }}\n \n
\n
\n \n \n
\n
\n \n
\n \n \n
\n \n
\n \n
\n \n \n \n \n \n
\n\n \n
\n
\n \n {{ t('detailText.unsupported', null, true) }}\n
\n \n {{ binaryTextSize(row.value) }}\n
\n \n \n
\n
\n \n
\n
\n \n \n {{ removeLabel || t('generic.remove') }}\n \n \n \n
\n
\n
\n \n
\n \n
\n \n\n\n","import { render } from \"./KeyValue.vue?vue&type=template&id=ec0ac46e\"\nimport script from \"./KeyValue.vue?vue&type=script&lang=js\"\nexport * from \"./KeyValue.vue?vue&type=script&lang=js\"\n\nimport \"./KeyValue.vue?vue&type=style&index=0&id=ec0ac46e&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, createElementVNode as _createElementVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"labels\" }\nconst _hoisted_2 = { class: \"labels__header\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"mt-10 mb-10\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _component_ToggleSwitch = _resolveComponent(\"ToggleSwitch\")!\n const _component_KeyValue = _resolveComponent(\"KeyValue\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($options.containerClass)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($props.defaultSectionClass)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n ($props.showLabelTitle)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_3, [\n _createVNode(_component_t, { k: \"labels.labels.title\" })\n ]))\n : _createCommentVNode(\"\", true),\n ($options.showToggler)\n ? (_openBlock(), _createBlock(_component_ToggleSwitch, {\n key: 1,\n value: $data.toggler,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => (($data.toggler) = $event)),\n name: \"label-system-toggle\",\n \"on-label\": _ctx.t('labels.labels.show')\n }, null, 8, [\"value\", \"on-label\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"p\", _hoisted_4, [\n _createVNode(_component_t, { k: \"labels.labels.description\" })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass($options.columnsClass)\n }, [\n _renderSlot(_ctx.$slots, \"labels\", {}, () => [\n _createVNode(_component_KeyValue, {\n key: \"labels\",\n value: $data.toggler ? $data.labels.initValue : $data.labels.value,\n \"add-label\": _ctx.t('labels.addLabel'),\n \"add-icon\": $props.addIcon,\n mode: $props.mode,\n \"read-allowed\": false,\n \"value-can-be-empty\": true,\n \"key-errors\": $data.labels.keyErrors,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ($data.labels.update($event, (x) => $props.value.setLabels(x))))\n }, null, 8, [\"value\", \"add-label\", \"add-icon\", \"mode\", \"key-errors\"])\n ], true)\n ], 2)\n ])\n ], 2),\n _cache[3] || (_cache[3] = _createElementVNode(\"div\", { class: \"spacer\" }, null, -1)),\n ($props.showAnnotations)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($options.sectionClass)\n }, [\n _createVNode(_component_KeyValue, {\n key: \"annotations\",\n value: $data.toggler ? $data.annotations.initValue : $data.annotations.value,\n \"add-label\": _ctx.t('labels.addAnnotation'),\n \"add-icon\": $props.addIcon,\n mode: $props.mode,\n title: _ctx.t('labels.annotations.title'),\n \"title-protip\": $props.annotationTitleTooltip,\n \"read-allowed\": false,\n \"value-can-be-empty\": true,\n \"key-errors\": $data.annotations.keyErrors,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ($data.annotations.update($event, (x) => $props.value.setAnnotations(x))))\n }, null, 8, [\"value\", \"add-label\", \"add-icon\", \"mode\", \"title\", \"title-protip\", \"key-errors\"])\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\n\n \n
\n
\n \n
\n \n
\n
\n \n value.setLabels(x))\"\n />\n \n
\n
\n
\n
\n
\n value.setAnnotations(x))\"\n />\n
\n
\n \n\n\n","import { render } from \"./Labels.vue?vue&type=template&id=d91f8768&scoped=true&ts=true\"\nimport script from \"./Labels.vue?vue&type=script&lang=ts\"\nexport * from \"./Labels.vue?vue&type=script&lang=ts\"\n\nimport \"./Labels.vue?vue&type=style&index=0&id=d91f8768&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d91f8768\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n\n \n
\n \n
\n
\n {{ row.matching }}\n
\n
\n
\n
\n
\n {{ row.key }}\n
\n
\n
\n
\n
\n
\n {{ row.operator }}\n
\n
opt.value\"\n :mode=\"mode\"\n :data-testid=\"`input-match-expression-operator-control-${index}`\"\n @update:value=\"update\"\n />\n \n\n
\n … \n
\n
\n
\n {{ row.values }}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{ _addLabel }}\n \n
\n
\n \n\n\n","import { render } from \"./MatchExpressions.vue?vue&type=template&id=6b569773&scoped=true\"\nimport script from \"./MatchExpressions.vue?vue&type=script&lang=js\"\nexport * from \"./MatchExpressions.vue?vue&type=script&lang=js\"\n\nimport \"./MatchExpressions.vue?vue&type=style&index=0&id=6b569773&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b569773\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"row mb-20\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_3 = { class: \"col span-6\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_LabeledSelect = _resolveComponent(\"LabeledSelect\")!\n const _component_ResourceLabeledSelect = _resolveComponent(\"ResourceLabeledSelect\")!\n const _component_NodeAffinity = _resolveComponent(\"NodeAffinity\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_RadioGroup, {\n value: $data.selectNode,\n \"onUpdate:value\": [\n _cache[0] || (_cache[0] = ($event: any) => (($data.selectNode) = $event)),\n $options.update\n ],\n name: \"selectNode\",\n options: $options.selectNodeOptions,\n mode: $props.mode,\n \"data-testid\": 'node-scheduling-selectNode'\n }, null, 8, [\"value\", \"options\", \"mode\", \"onUpdate:value\"])\n ]),\n ($data.selectNode === 'nodeSelector')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n ($props.nodes)\n ? (_openBlock(), _createBlock(_component_LabeledSelect, {\n key: 0,\n value: $data.nodeName,\n \"onUpdate:value\": [\n _cache[1] || (_cache[1] = ($event: any) => (($data.nodeName) = $event)),\n $options.update\n ],\n label: _ctx.t('workload.scheduling.affinity.nodeName'),\n options: $props.nodes || [],\n mode: $props.mode,\n multiple: false,\n loading: $props.loading,\n \"data-testid\": 'node-scheduling-nodeSelector'\n }, null, 8, [\"value\", \"label\", \"options\", \"mode\", \"loading\", \"onUpdate:value\"]))\n : (_openBlock(), _createBlock(_component_ResourceLabeledSelect, {\n key: 1,\n value: $data.nodeName,\n \"onUpdate:value\": [\n _cache[2] || (_cache[2] = ($event: any) => (($data.nodeName) = $event)),\n $options.update\n ],\n label: _ctx.t('workload.scheduling.affinity.nodeName'),\n \"resource-type\": $data.NODE,\n mode: $props.mode,\n multiple: false,\n loading: $props.loading,\n \"data-testid\": 'node-scheduling-nodeSelector',\n allResourcesSettings: $data.nodeSchedulingAllSettings,\n paginatedResourceSettings: $data.nodeSchedulingPaginationSettings\n }, null, 8, [\"value\", \"label\", \"resource-type\", \"mode\", \"loading\", \"allResourcesSettings\", \"paginatedResourceSettings\", \"onUpdate:value\"]))\n ])\n ]))\n : ($data.selectNode === 'affinity')\n ? (_openBlock(), _createBlock(_component_NodeAffinity, {\n key: 1,\n value: $data.nodeAffinity,\n \"onUpdate:value\": [\n _cache[3] || (_cache[3] = ($event: any) => (($data.nodeAffinity) = $event)),\n $options.update\n ],\n mode: $props.mode,\n \"data-testid\": 'node-scheduling-nodeAffinity'\n }, null, 8, [\"value\", \"mode\", \"onUpdate:value\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\n\n\n \n
\n \n
\n
\n \n \n
\n \n \n
\n \n","\n\n\n \n \n\n\n","import { render } from \"./NodeAffinity.vue?vue&type=template&id=aeb6a65e\"\nimport script from \"./NodeAffinity.vue?vue&type=script&lang=js\"\nexport * from \"./NodeAffinity.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./NodeScheduling.vue?vue&type=template&id=97349c12&ts=true\"\nimport script from \"./NodeScheduling.vue?vue&type=script&lang=ts\"\nexport * from \"./NodeScheduling.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./Password.vue?vue&type=template&id=3b3998e6&scoped=true\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport \"./Password.vue?vue&type=style&index=0&id=3b3998e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b3998e6\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n \n
\n \n \n \n
\n updateLabelSelector(e, props)\"\n />\n \n \n \n
\n
\n \n\n\n","import { render } from \"./PodAffinity.vue?vue&type=template&id=33e509b9\"\nimport script from \"./PodAffinity.vue?vue&type=script&lang=js\"\nexport * from \"./PodAffinity.vue?vue&type=script&lang=js\"\n\nimport \"./PodAffinity.vue?vue&type=style&index=0&id=33e509b9&lang=css\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n \n
\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, renderSlot as _renderSlot, resolveComponent as _resolveComponent, mergeProps as _mergeProps, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ResourceTable = _resolveComponent(\"ResourceTable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_ResourceTable, _mergeProps({ ref: \"table\" }, _ctx.$attrs, {\n schema: _ctx.schema,\n rows: _ctx.rows,\n \"alt-loading\": _ctx.canPaginate && !_ctx.isFirstLoad,\n loading: _ctx.loading,\n \"group-by\": _ctx.groupBy,\n \"group-sort\": _ctx.groupSort,\n groupable: _ctx.groupable,\n groupTooltip: _ctx.groupTooltip,\n groupOptions: _ctx.groupOptions,\n \"override-in-store\": _ctx.overrideInStore,\n headers: _ctx.safeHeaders,\n namespaced: _ctx.namespaced,\n \"external-pagination-enabled\": _ctx.canPaginate,\n \"external-pagination-result\": _ctx.paginationResult,\n onPaginationChanged: _ctx.paginationChanged\n }), _createSlots({ _: 2 }, [\n _renderList(_ctx.$slots, (_, slot) => {\n return {\n name: slot,\n fn: _withCtx((scope) => [\n _renderSlot(_ctx.$slots, slot, _normalizeProps(_guardReactiveProps(scope)))\n ])\n }\n })\n ]), 1040, [\"schema\", \"rows\", \"alt-loading\", \"loading\", \"group-by\", \"group-sort\", \"groupable\", \"groupTooltip\", \"groupOptions\", \"override-in-store\", \"headers\", \"namespaced\", \"external-pagination-enabled\", \"external-pagination-result\", \"onPaginationChanged\"])\n ]))\n}","\n\n\n \n \n \n \n \n \n \n
\n \n","import { render } from \"./PaginatedResourceTable.vue?vue&type=template&id=24ecca48&ts=true\"\nimport script from \"./PaginatedResourceTable.vue?vue&type=script&lang=ts\"\nexport * from \"./PaginatedResourceTable.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n","import { render } from \"./RelatedResources.vue?vue&type=template&id=d7c9e9ec\"\nimport script from \"./RelatedResources.vue?vue&type=script&lang=js\"\nexport * from \"./RelatedResources.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=4f2c6329&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4f2c6329&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f2c6329\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".node-selector{position:relative}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-a3d99010]{display:flex;flex-direction:column}.label .value[data-v-a3d99010]{font-size:14px;line-height:18px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-357627fa]{display:flex;flex-direction:column}.label .value[data-v-357627fa]{font-size:14px;line-height:18px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-value{width:100%}.key-value .file-selector.role-link{text-transform:none;padding:0}.key-value .kv-container{display:grid;align-items:center;-moz-column-gap:20px;column-gap:20px}.key-value .kv-container .key-value-label{margin-bottom:0}.key-value .kv-container .kv-item{width:100%;margin:10px 0 10px 0}.key-value .kv-container .kv-item.extra,.key-value .kv-container .kv-item.key{align-self:flex-start}.key-value .kv-container .kv-item.value .value-container.upload-button{position:relative;display:flex;justify-content:right;align-items:center}.key-value .kv-container .kv-item.value .value-container .file-selector{position:absolute;margin-right:5px}.key-value .kv-container .kv-item.value textarea{padding:10px 10px 10px 10px}.key-value .kv-container .kv-item .concealed-value{padding:10px;min-height:40px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.key-value .kv-container .kv-item .concealed-value:before{content:\\\"••••••••••••••••••••\\\"}.key-value .kv-container .kv-item .text-monospace:not(.conceal){font-family:monospace,monospace}.key-value .rowgroup{display:grid;grid-column-start:1;grid-column-end:span end;grid-template-columns:subgrid}.key-value .row:before{display:none}.key-value .row{display:grid;grid-column-start:1;grid-column-end:span end;grid-template-columns:subgrid}.key-value .remove{text-align:center}.key-value .remove BUTTON{padding:0}.key-value .title{margin-bottom:10px}.key-value .title .read-from-file{float:right}.key-value input{height:40px;line-height:1}.key-value .footer .protip{float:right;padding:5px 0}.key-value .download{text-align:right}.key-value .copy-value{padding:0 0 0 10px}.labeled-input-key{position:relative;display:flex;border-collapse:separate;z-index:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labels__header[data-v-d91f8768]{display:flex;justify-content:space-between}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".operator .vs__dropdown-option[data-v-6b569773]{padding:3px 6px 3px 6px!important}.remove-expression[data-v-6b569773]{padding:8px;position:absolute;margin-bottom:10px;right:0;top:0;z-index:2}.remove-expression i[data-v-6b569773]{font-size:2em}.remove-container[data-v-6b569773]{display:flex;justify-content:center}.match-expression-header[data-v-6b569773],.match-expression-row[data-v-6b569773]{display:grid;grid-template-columns:1fr 1fr 1fr;margin:5px 0;grid-gap:1.75%}.match-expression-header>LABEL[data-v-6b569773],.match-expression-row>LABEL[data-v-6b569773]{margin:0}.match-expression-header[data-v-6b569773]:not(.view),.match-expression-row[data-v-6b569773]:not(.view){grid-template-columns:repeat(3,1fr) 50px}.match-expression-row>div>input[data-v-6b569773]{min-height:40px!important}.match-expression-header-matching[data-v-6b569773],.match-expression-row-matching[data-v-6b569773]{grid-template-columns:1fr 1fr 1fr 1fr}.match-expression-header-matching[data-v-6b569773]:not(.view),.match-expression-row-matching[data-v-6b569773]:not(.view){grid-template-columns:1fr 1fr 1fr 1fr 100px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".password[data-v-3b3998e6]{display:flex;flex-direction:column}.password .labeled-input .addon[data-v-3b3998e6]{display:flex;align-items:center;justify-content:center;padding-left:12px;min-width:65px}.password .labeled-input .addon .hide-show[data-v-3b3998e6]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:4px}.password .genPassword[data-v-3b3998e6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-tabs.view[data-v-4f2c6329] .tabs.horizontal{border:none}.resource-tabs.view[data-v-4f2c6329] .tabs.horizontal+.tab-container{border:none;border-top:1px solid var(--border);padding:0;padding-top:24px}.tab-caption[data-v-4f2c6329]{align-items:center;font-size:16px;margin-bottom:24px}.tab-caption .namespace-name[data-v-4f2c6329]{display:inline;font-weight:700;margin-right:0 4px;white-space:nowrap}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*!\n * vue-draggable-next v2.3.0\n * (c) 2025 Anish George\n * @license MIT\n */\nimport { defineComponent, ref, computed, getCurrentInstance, onMounted, h, resolveComponent, nextTick } from 'vue';\n\nfunction getConsole() {\n if (typeof window !== 'undefined') {\n return window.console;\n }\n return global.console;\n}\nconst console = getConsole();\nfunction cached(fn) {\n const cache = Object.create(null);\n return function cachedFn(str) {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst regex = /-(\\w)/g;\nconst camelize = cached((str) => str.replace(regex, (_, c) => (c ? c.toUpperCase() : '')));\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\nfunction insertNodeAt(fatherNode, node, position) {\n const refNode = position === 0\n ? fatherNode.children[0]\n : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n/**!\n * Sortable 1.14.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar version = \"1.14.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\n// Utility functions remain outside component\nfunction computeVmIndex(vnodes, element) {\n return Object.values(vnodes).indexOf(element);\n}\nfunction computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n const elmFromNodes = Object.values(slots);\n const footerIndex = children.length - footerOffset;\n const rawIndexes = [...children].map((elt, idx) => idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt));\n return rawIndexes;\n}\nfunction isTransitionName(name) {\n return ['transition-group', 'TransitionGroup'].includes(name);\n}\nfunction isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n const [{ type }] = slots;\n if (!type) {\n return false;\n }\n return isTransitionName(type.name);\n}\nfunction getComponentAttributes($attrs, componentData) {\n if (!componentData) {\n return $attrs;\n }\n return { ...componentData.props, ...componentData.attrs };\n}\nconst eventsListened = ['Start', 'Add', 'Remove', 'Update', 'End'];\nconst eventsToEmit = ['Choose', 'Unchoose', 'Sort', 'Filter', 'Clone'];\nconst readonlyProperties = ['Move', ...eventsListened, ...eventsToEmit].map(evt => 'on' + evt);\nlet draggingElement = null;\nconst VueDraggableNext = defineComponent({\n name: 'VueDraggableNext',\n inheritAttrs: false,\n props: {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null,\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false,\n },\n clone: {\n type: Function,\n default: (original) => {\n return original;\n },\n },\n tag: {\n type: String,\n default: 'div',\n },\n move: {\n type: Function,\n default: null,\n },\n componentData: {\n type: Object,\n required: false,\n default: null,\n },\n component: {\n type: String,\n default: null,\n },\n modelValue: {\n type: Array,\n required: false,\n default: null,\n },\n },\n emits: [\n 'update:modelValue',\n 'move',\n 'change',\n ...eventsListened.map(s => s.toLowerCase()),\n ...eventsToEmit.map(s => s.toLowerCase()),\n ],\n setup(props, { emit, slots, attrs }) {\n // Reactive state\n const transitionMode = ref(false);\n const noneFunctionalComponentMode = ref(false);\n const headerOffset = ref(0);\n const footerOffset = ref(0);\n const visibleIndexes = ref([]);\n const context = ref(null);\n const sortableInstance = ref(null);\n // Computed reactive list source\n const realList = computed(() => props.list ? props.list : props.modelValue);\n // Current component instance (access to $el etc.)\n const instance = getCurrentInstance();\n // getTag function converts to computed or normal function here\n function getTag() {\n return props.component ? resolveComponent(props.component) : props.tag;\n }\n function updateOptions(newOptionValue) {\n if (!sortableInstance.value)\n return;\n for (const property in newOptionValue) {\n const value = camelize(property);\n if (readonlyProperties.indexOf(value) === -1) {\n sortableInstance.value.option(value, newOptionValue[property]);\n }\n }\n }\n function getChildrenNodes() {\n return instance?.proxy?.$el.children || [];\n }\n async function computeIndexesFn() {\n await nextTick();\n visibleIndexes.value = computeIndexes(getChildrenNodes(), (instance?.proxy?.$el.children || []), transitionMode.value, footerOffset.value);\n }\n function getUnderlyingVm(htmlElt) {\n const index = computeVmIndex(getChildrenNodes() || [], htmlElt);\n if (index === -1) {\n return null;\n }\n const element = realList.value ? realList.value[index] : null;\n return { index, element };\n }\n function emitChanges(evt) {\n nextTick(() => emit('change', evt));\n }\n function alterList(onList) {\n if (props.list) {\n onList(props.list);\n return;\n }\n const newList = [...(props.modelValue || [])];\n onList(newList);\n emit('update:modelValue', newList);\n }\n function spliceList(...args) {\n const spliceList = (list) => list.splice(...args);\n alterList(spliceList);\n }\n function updatePosition(oldIndex, newIndex) {\n const updatePosition = (list) => list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n alterList(updatePosition);\n }\n function getVmIndex(domIndex) {\n const indexes = visibleIndexes.value;\n const numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n }\n function getComponent() {\n if (!slots.default)\n return null;\n const sl = slots.default();\n return sl[0]?.component?.proxy || null;\n }\n function resetTransitionData(index) {\n if (!props.noTransitionOnDrag || !transitionMode.value)\n return;\n const nodes = getChildrenNodes();\n if (nodes[index]) {\n nodes[index].data = null;\n }\n const transitionContainer = getComponent();\n if (transitionContainer) {\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n }\n }\n function onDragStart(evt) {\n computeIndexesFn();\n context.value = getUnderlyingVm(evt.item);\n if (!context.value)\n return;\n evt.item._underlying_vm_ = props.clone(context.value.element);\n draggingElement = evt.item;\n }\n function onDragAdd(evt) {\n const element = evt.item._underlying_vm_;\n if (element === undefined)\n return;\n removeNode(evt.item);\n const newIndex = getVmIndex(evt.newIndex);\n spliceList(newIndex, 0, element);\n computeIndexesFn();\n emitChanges({ added: { element, newIndex } });\n }\n function onDragRemove(evt) {\n insertNodeAt(instance?.proxy?.$el, evt.item, evt.oldIndex);\n if (evt.pullMode === 'clone') {\n removeNode(evt.clone);\n return;\n }\n if (!context.value)\n return;\n const oldIndex = context.value.index;\n spliceList(oldIndex, 1);\n resetTransitionData(oldIndex);\n emitChanges({ removed: { element: context.value.element, oldIndex } });\n }\n function onDragUpdate(evt) {\n removeNode(evt.item);\n insertNodeAt(evt.from, evt.item, evt.oldIndex);\n const oldIndex = context.value?.index;\n const newIndex = getVmIndex(evt.newIndex);\n updatePosition(oldIndex, newIndex);\n emitChanges({\n moved: { element: context.value?.element, oldIndex, newIndex },\n });\n }\n function updateProperty(evt, propertyName) {\n if (Object.prototype.hasOwnProperty.call(evt, propertyName))\n evt[propertyName] += headerOffset.value;\n }\n function getTargetedComponent(htmlElement) {\n return htmlElement.__draggable_component__;\n }\n function getRelatedContextFromMoveEvent({ to, related, }) {\n const component = getTargetedComponent(to);\n if (!component) {\n return { component };\n }\n const list = component.realList;\n const contextLocal = { list, component };\n if (to !== related && list && component.getUnderlyingVm) {\n const destination = component.getUnderlyingVm(related);\n if (destination) {\n return Object.assign(destination, contextLocal);\n }\n }\n return contextLocal;\n }\n function computeFutureIndex(relatedContext, evt) {\n const domChildren = [...evt.to.children].filter((el) => el.style['display'] !== 'none');\n if (domChildren.length === 0)\n return 0;\n const currentDOMIndex = domChildren.indexOf(evt.related);\n const currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n const draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter\n ? currentIndex\n : currentIndex + 1;\n }\n const mounted = () => {\n const optionsAdded = {};\n eventsListened.forEach(elt => {\n optionsAdded['on' + elt] = delegateAndEmit(elt);\n });\n eventsToEmit.forEach(elt => {\n optionsAdded['on' + elt] = emitEvent.bind(null, elt);\n });\n const attributes = Object.keys(attrs).reduce((res, key) => {\n res[camelize(key)] = attrs[key];\n return res;\n }, {});\n const options = Object.assign({}, attributes, optionsAdded, {\n onMove: (evt, originalEvent) => {\n return onDragMove(evt, originalEvent);\n },\n });\n if (!('draggable' in options)) {\n options.draggable = '>*';\n }\n const targetDomElement = instance?.proxy?.$el.nodeType === 1\n ? instance.proxy.$el\n : instance?.proxy?.$el.parentElement || null;\n if (targetDomElement) {\n sortableInstance.value = new Sortable(targetDomElement, options);\n targetDomElement.__draggable_component__ = instance?.proxy;\n computeIndexesFn();\n }\n };\n function emitEvent(evtName, evtData) {\n nextTick(() => emit(evtName.toLowerCase(), evtData));\n }\n function delegateAndEmit(evtName) {\n return (evtData) => {\n if (realList.value !== null) {\n // call handler like onDragStart etc. if available\n const handlerName = 'onDrag' + evtName;\n const handler = methods[handlerName];\n if (handler) {\n handler(evtData);\n }\n }\n emitEvent(evtName, evtData);\n };\n }\n function onDragMove(evt, originalEvent) {\n const onMove = props.move;\n if (!onMove || !realList.value) {\n return true;\n }\n const relatedContext = getRelatedContextFromMoveEvent(evt);\n const draggedContext = context.value;\n const futureIndex = computeFutureIndex(relatedContext, evt);\n if (draggedContext) {\n Object.assign(draggedContext, { futureIndex });\n }\n const sendEvt = Object.assign({}, evt, {\n relatedContext,\n draggedContext,\n });\n return onMove(sendEvt, originalEvent);\n }\n function onDragEnd() {\n computeIndexesFn();\n draggingElement = null;\n }\n // You can group 'methods' into an object for delegateAndEmit references if needed\n const methods = {\n onDragStart,\n onDragAdd,\n onDragRemove,\n onDragUpdate,\n onDragMove,\n onDragEnd,\n };\n onMounted(() => {\n // Call setup's mounted method\n mounted();\n });\n // created lifecycle equivalent (run synchronously)\n if (props.list !== null && props.modelValue !== null) {\n console.error('list props are mutually exclusive! Please set one.');\n }\n // Expose what you want accessible in template / render\n return {\n getTag,\n realList,\n visibleIndexes,\n noneFunctionalComponentMode,\n headerOffset,\n footerOffset,\n transitionMode,\n computeIndexes: computeIndexesFn,\n updateOptions,\n getChildrenNodes,\n getUnderlyingVm,\n emitChanges,\n alterList,\n spliceList,\n updatePosition,\n getVmIndex,\n getComponent,\n resetTransitionData,\n onDragStart,\n onDragAdd,\n onDragRemove,\n onDragUpdate,\n updateProperty,\n onDragMove,\n onDragEnd,\n mounted,\n context,\n sortableInstance,\n getRelatedContextFromMoveEvent,\n getTargetedComponent,\n computeFutureIndex,\n // ... other exposed functions as needed\n };\n // Vue 3 lifecycle hooks outside setup\n },\n render() {\n const tag = this.getTag();\n const attrs = getComponentAttributes(this.$attrs, this.componentData);\n // For HTML tags, call the slot function and pass the result\n if (typeof tag === 'string') {\n const slots = this.$slots.default && typeof this.$slots.default === 'function'\n ? this.$slots.default()\n : null;\n if (!slots)\n return h(tag, attrs, []);\n this.transitionMode = isTransition(slots);\n return h(tag, attrs, slots);\n }\n // For components, pass the slot functions, not their results\n const slotFunctions = this.$slots.default\n ? { default: this.$slots.default }\n : {};\n if (this.$slots.default) {\n const slotResult = typeof this.$slots.default === 'function' ? this.$slots.default() : null;\n this.transitionMode = isTransition(slotResult || []);\n }\n return h(tag, attrs, slotFunctions);\n },\n});\n\n/**\n * TypeScript definitions for vue-draggable-next\n * Provides comprehensive type support for all component features\n */\n// Type guards\nfunction isDraggableEvent(event) {\n return event && typeof event === 'object' && 'item' in event;\n}\nfunction isChangeEvent(event) {\n return (event &&\n typeof event === 'object' &&\n ('added' in event || 'removed' in event || 'moved' in event));\n}\nfunction isMoveEvent(event) {\n return (event &&\n typeof event === 'object' &&\n 'draggedContext' in event &&\n 'relatedContext' in event);\n}\n// Default values\nconst DEFAULT_PROPS = {\n tag: 'div',\n sort: true,\n disabled: false,\n animation: 0,\n ghostClass: '',\n chosenClass: '',\n dragClass: '',\n delay: 0,\n delayOnTouchStart: false,\n touchStartThreshold: 5,\n forceFallback: false,\n fallbackTolerance: 0,\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true,\n};\n// Validation helpers\nfunction validateProps(props) {\n const errors = [];\n if (props.list && props.modelValue) {\n errors.push('Cannot use both \"list\" and \"modelValue\" props simultaneously');\n }\n if (props.animation && (props.animation < 0 || props.animation > 3000)) {\n errors.push('Animation duration should be between 0 and 3000ms');\n }\n if (props.delay && props.delay < 0) {\n errors.push('Delay must be a positive number');\n }\n return errors;\n}\n\nexport { DEFAULT_PROPS, VueDraggableNext, isChangeEvent, isDraggableEvent, isMoveEvent, validateProps };\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./InputOrDisplay.vue?vue&type=template&id=a3d99010&scoped=true\"\nimport script from \"./InputOrDisplay.vue?vue&type=script&lang=js\"\nexport * from \"./InputOrDisplay.vue?vue&type=script&lang=js\"\n\nimport \"./InputOrDisplay.vue?vue&type=style&index=0&id=a3d99010&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a3d99010\"]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ name }}\n \n
\n\n
\n \n {{ value }}\n \n
\n
\n \n\n\n","import { render } from \"./LabelValue.vue?vue&type=template&id=357627fa&scoped=true\"\nimport script from \"./LabelValue.vue?vue&type=script&lang=js\"\nexport * from \"./LabelValue.vue?vue&type=script&lang=js\"\n\nimport \"./LabelValue.vue?vue&type=style&index=0&id=357627fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-357627fa\"]])\n\nexport default __exports__","\n\n\n \n \n {{ row.condition }} \n \n\n \n {{ row.status }} \n \n \n \n","import { render } from \"./Conditions.vue?vue&type=template&id=33f0e47c\"\nimport script from \"./Conditions.vue?vue&type=script&lang=js\"\nexport * from \"./Conditions.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n
\n \n \n {{ title }}\n \n \n \n
\n
\n
\n \n
\n
\n {{ _keyLabel }}\n \n
\n
\n {{ _valueLabel }}\n \n
\n
\n \n {{ c }}\n \n
\n
\n \n \n
\n
\n \n
\n \n \n
\n \n
\n \n
\n \n \n \n \n \n
\n\n \n
\n
\n \n {{ t('detailText.unsupported', null, true) }}\n
\n \n {{ binaryTextSize(row.value) }}\n
\n \n \n
\n
\n \n
\n
\n \n \n {{ removeLabel || t('generic.remove') }}\n \n \n \n
\n
\n
\n \n
\n \n
\n \n\n\n","import { render } from \"./KeyValue.vue?vue&type=template&id=ec0ac46e\"\nimport script from \"./KeyValue.vue?vue&type=script&lang=js\"\nexport * from \"./KeyValue.vue?vue&type=script&lang=js\"\n\nimport \"./KeyValue.vue?vue&type=style&index=0&id=ec0ac46e&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, createElementVNode as _createElementVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"labels\" }\nconst _hoisted_2 = { class: \"labels__header\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"mt-10 mb-10\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _component_ToggleSwitch = _resolveComponent(\"ToggleSwitch\")!\n const _component_KeyValue = _resolveComponent(\"KeyValue\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($options.containerClass)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($props.defaultSectionClass)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n ($props.showLabelTitle)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_3, [\n _createVNode(_component_t, { k: \"labels.labels.title\" })\n ]))\n : _createCommentVNode(\"\", true),\n ($options.showToggler)\n ? (_openBlock(), _createBlock(_component_ToggleSwitch, {\n key: 1,\n value: $data.toggler,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => (($data.toggler) = $event)),\n name: \"label-system-toggle\",\n \"on-label\": _ctx.t('labels.labels.show')\n }, null, 8, [\"value\", \"on-label\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"p\", _hoisted_4, [\n _createVNode(_component_t, { k: \"labels.labels.description\" })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass($options.columnsClass)\n }, [\n _renderSlot(_ctx.$slots, \"labels\", {}, () => [\n _createVNode(_component_KeyValue, {\n key: \"labels\",\n value: $data.toggler ? $data.labels.initValue : $data.labels.value,\n \"add-label\": _ctx.t('labels.addLabel'),\n \"add-icon\": $props.addIcon,\n mode: $props.mode,\n \"read-allowed\": false,\n \"value-can-be-empty\": true,\n \"key-errors\": $data.labels.keyErrors,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ($data.labels.update($event, (x) => $props.value.setLabels(x))))\n }, null, 8, [\"value\", \"add-label\", \"add-icon\", \"mode\", \"key-errors\"])\n ], true)\n ], 2)\n ])\n ], 2),\n _cache[3] || (_cache[3] = _createElementVNode(\"div\", { class: \"spacer\" }, null, -1)),\n ($props.showAnnotations)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($options.sectionClass)\n }, [\n _createVNode(_component_KeyValue, {\n key: \"annotations\",\n value: $data.toggler ? $data.annotations.initValue : $data.annotations.value,\n \"add-label\": _ctx.t('labels.addAnnotation'),\n \"add-icon\": $props.addIcon,\n mode: $props.mode,\n title: _ctx.t('labels.annotations.title'),\n \"title-protip\": $props.annotationTitleTooltip,\n \"read-allowed\": false,\n \"value-can-be-empty\": true,\n \"key-errors\": $data.annotations.keyErrors,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ($data.annotations.update($event, (x) => $props.value.setAnnotations(x))))\n }, null, 8, [\"value\", \"add-label\", \"add-icon\", \"mode\", \"title\", \"title-protip\", \"key-errors\"])\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\n\n \n
\n
\n \n
\n \n
\n
\n \n value.setLabels(x))\"\n />\n \n
\n
\n
\n
\n
\n value.setAnnotations(x))\"\n />\n
\n
\n \n\n\n","import { render } from \"./Labels.vue?vue&type=template&id=d91f8768&scoped=true&ts=true\"\nimport script from \"./Labels.vue?vue&type=script&lang=ts\"\nexport * from \"./Labels.vue?vue&type=script&lang=ts\"\n\nimport \"./Labels.vue?vue&type=style&index=0&id=d91f8768&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d91f8768\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n\n \n
\n \n
\n
\n {{ row.matching }}\n
\n
\n
\n
\n
\n {{ row.key }}\n
\n
\n
\n
\n
\n
\n {{ row.operator }}\n
\n
opt.value\"\n :mode=\"mode\"\n :data-testid=\"`input-match-expression-operator-control-${index}`\"\n @update:value=\"update\"\n />\n \n\n
\n … \n
\n
\n
\n {{ row.values }}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{ _addLabel }}\n \n
\n
\n \n\n\n","import { render } from \"./MatchExpressions.vue?vue&type=template&id=6b569773&scoped=true\"\nimport script from \"./MatchExpressions.vue?vue&type=script&lang=js\"\nexport * from \"./MatchExpressions.vue?vue&type=script&lang=js\"\n\nimport \"./MatchExpressions.vue?vue&type=style&index=0&id=6b569773&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b569773\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"row mb-20\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_3 = { class: \"col span-6\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_LabeledSelect = _resolveComponent(\"LabeledSelect\")!\n const _component_ResourceLabeledSelect = _resolveComponent(\"ResourceLabeledSelect\")!\n const _component_NodeAffinity = _resolveComponent(\"NodeAffinity\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_RadioGroup, {\n value: $data.selectNode,\n \"onUpdate:value\": [\n _cache[0] || (_cache[0] = ($event: any) => (($data.selectNode) = $event)),\n $options.update\n ],\n name: \"selectNode\",\n options: $options.selectNodeOptions,\n mode: $props.mode,\n \"data-testid\": 'node-scheduling-selectNode'\n }, null, 8, [\"value\", \"options\", \"mode\", \"onUpdate:value\"])\n ]),\n ($data.selectNode === 'nodeSelector')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n ($props.nodes)\n ? (_openBlock(), _createBlock(_component_LabeledSelect, {\n key: 0,\n value: $data.nodeName,\n \"onUpdate:value\": [\n _cache[1] || (_cache[1] = ($event: any) => (($data.nodeName) = $event)),\n $options.update\n ],\n label: _ctx.t('workload.scheduling.affinity.nodeName'),\n options: $props.nodes || [],\n mode: $props.mode,\n multiple: false,\n loading: $props.loading,\n \"data-testid\": 'node-scheduling-nodeSelector'\n }, null, 8, [\"value\", \"label\", \"options\", \"mode\", \"loading\", \"onUpdate:value\"]))\n : (_openBlock(), _createBlock(_component_ResourceLabeledSelect, {\n key: 1,\n value: $data.nodeName,\n \"onUpdate:value\": [\n _cache[2] || (_cache[2] = ($event: any) => (($data.nodeName) = $event)),\n $options.update\n ],\n label: _ctx.t('workload.scheduling.affinity.nodeName'),\n \"resource-type\": $data.NODE,\n mode: $props.mode,\n multiple: false,\n loading: $props.loading,\n \"data-testid\": 'node-scheduling-nodeSelector',\n allResourcesSettings: $data.nodeSchedulingAllSettings,\n paginatedResourceSettings: $data.nodeSchedulingPaginationSettings\n }, null, 8, [\"value\", \"label\", \"resource-type\", \"mode\", \"loading\", \"allResourcesSettings\", \"paginatedResourceSettings\", \"onUpdate:value\"]))\n ])\n ]))\n : ($data.selectNode === 'affinity')\n ? (_openBlock(), _createBlock(_component_NodeAffinity, {\n key: 1,\n value: $data.nodeAffinity,\n \"onUpdate:value\": [\n _cache[3] || (_cache[3] = ($event: any) => (($data.nodeAffinity) = $event)),\n $options.update\n ],\n mode: $props.mode,\n \"data-testid\": 'node-scheduling-nodeAffinity'\n }, null, 8, [\"value\", \"mode\", \"onUpdate:value\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\n\n\n \n
\n \n
\n
\n \n \n
\n \n \n
\n \n","\n\n\n \n \n\n\n","import { render } from \"./NodeAffinity.vue?vue&type=template&id=aeb6a65e\"\nimport script from \"./NodeAffinity.vue?vue&type=script&lang=js\"\nexport * from \"./NodeAffinity.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./NodeScheduling.vue?vue&type=template&id=97349c12&ts=true\"\nimport script from \"./NodeScheduling.vue?vue&type=script&lang=ts\"\nexport * from \"./NodeScheduling.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./Password.vue?vue&type=template&id=3b3998e6&scoped=true\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport \"./Password.vue?vue&type=style&index=0&id=3b3998e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b3998e6\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n \n
\n \n \n \n
\n updateLabelSelector(e, props)\"\n />\n \n \n \n
\n
\n \n\n\n","import { render } from \"./PodAffinity.vue?vue&type=template&id=33e509b9\"\nimport script from \"./PodAffinity.vue?vue&type=script&lang=js\"\nexport * from \"./PodAffinity.vue?vue&type=script&lang=js\"\n\nimport \"./PodAffinity.vue?vue&type=style&index=0&id=33e509b9&lang=css\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n \n
\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, renderSlot as _renderSlot, resolveComponent as _resolveComponent, mergeProps as _mergeProps, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ResourceTable = _resolveComponent(\"ResourceTable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_ResourceTable, _mergeProps({ ref: \"table\" }, _ctx.$attrs, {\n schema: _ctx.schema,\n rows: _ctx.rows,\n \"alt-loading\": _ctx.canPaginate && !_ctx.isFirstLoad,\n loading: _ctx.loading,\n \"group-by\": _ctx.groupBy,\n \"group-sort\": _ctx.groupSort,\n groupable: _ctx.groupable,\n groupTooltip: _ctx.groupTooltip,\n groupOptions: _ctx.groupOptions,\n \"override-in-store\": _ctx.overrideInStore,\n headers: _ctx.safeHeaders,\n namespaced: _ctx.namespaced,\n \"external-pagination-enabled\": _ctx.canPaginate,\n \"external-pagination-result\": _ctx.paginationResult,\n onPaginationChanged: _ctx.paginationChanged\n }), _createSlots({ _: 2 }, [\n _renderList(_ctx.$slots, (_, slot) => {\n return {\n name: slot,\n fn: _withCtx((scope) => [\n _renderSlot(_ctx.$slots, slot, _normalizeProps(_guardReactiveProps(scope)))\n ])\n }\n })\n ]), 1040, [\"schema\", \"rows\", \"alt-loading\", \"loading\", \"group-by\", \"group-sort\", \"groupable\", \"groupTooltip\", \"groupOptions\", \"override-in-store\", \"headers\", \"namespaced\", \"external-pagination-enabled\", \"external-pagination-result\", \"onPaginationChanged\"])\n ]))\n}","\n\n\n \n \n \n \n \n \n \n
\n \n","import { render } from \"./PaginatedResourceTable.vue?vue&type=template&id=24ecca48&ts=true\"\nimport script from \"./PaginatedResourceTable.vue?vue&type=script&lang=ts\"\nexport * from \"./PaginatedResourceTable.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n","import { render } from \"./RelatedResources.vue?vue&type=template&id=d7c9e9ec\"\nimport script from \"./RelatedResources.vue?vue&type=script&lang=js\"\nexport * from \"./RelatedResources.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=4f2c6329&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4f2c6329&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f2c6329\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".node-selector{position:relative}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-a3d99010]{display:flex;flex-direction:column}.label .value[data-v-a3d99010]{font-size:14px;line-height:18px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-357627fa]{display:flex;flex-direction:column}.label .value[data-v-357627fa]{font-size:14px;line-height:18px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-value{width:100%}.key-value .file-selector.role-link{text-transform:none;padding:0}.key-value .kv-container{display:grid;align-items:center;-moz-column-gap:20px;column-gap:20px}.key-value .kv-container .key-value-label{margin-bottom:0}.key-value .kv-container .kv-item{width:100%;margin:10px 0 10px 0}.key-value .kv-container .kv-item.extra,.key-value .kv-container .kv-item.key{align-self:flex-start}.key-value .kv-container .kv-item.value .value-container.upload-button{position:relative;display:flex;justify-content:right;align-items:center}.key-value .kv-container .kv-item.value .value-container .file-selector{position:absolute;margin-right:5px}.key-value .kv-container .kv-item.value textarea{padding:10px 10px 10px 10px}.key-value .kv-container .kv-item .concealed-value{padding:10px;min-height:40px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.key-value .kv-container .kv-item .concealed-value:before{content:\\\"••••••••••••••••••••\\\"}.key-value .kv-container .kv-item .text-monospace:not(.conceal){font-family:monospace,monospace}.key-value .rowgroup{display:grid;grid-column-start:1;grid-column-end:span end;grid-template-columns:subgrid}.key-value .row:before{display:none}.key-value .row{display:grid;grid-column-start:1;grid-column-end:span end;grid-template-columns:subgrid}.key-value .remove{text-align:center}.key-value .remove BUTTON{padding:0}.key-value .title{margin-bottom:10px}.key-value .title .read-from-file{float:right}.key-value input{height:40px;line-height:1}.key-value .footer .protip{float:right;padding:5px 0}.key-value .download{text-align:right}.key-value .copy-value{padding:0 0 0 10px}.labeled-input-key{position:relative;display:flex;border-collapse:separate;z-index:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labels__header[data-v-d91f8768]{display:flex;justify-content:space-between}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".operator .vs__dropdown-option[data-v-6b569773]{padding:3px 6px 3px 6px!important}.remove-expression[data-v-6b569773]{padding:8px;position:absolute;margin-bottom:10px;right:0;top:0;z-index:2}.remove-expression i[data-v-6b569773]{font-size:2em}.remove-container[data-v-6b569773]{display:flex;justify-content:center}.match-expression-header[data-v-6b569773],.match-expression-row[data-v-6b569773]{display:grid;grid-template-columns:1fr 1fr 1fr;margin:5px 0;grid-gap:1.75%}.match-expression-header>LABEL[data-v-6b569773],.match-expression-row>LABEL[data-v-6b569773]{margin:0}.match-expression-header[data-v-6b569773]:not(.view),.match-expression-row[data-v-6b569773]:not(.view){grid-template-columns:repeat(3,1fr) 50px}.match-expression-row>div>input[data-v-6b569773]{min-height:40px!important}.match-expression-header-matching[data-v-6b569773],.match-expression-row-matching[data-v-6b569773]{grid-template-columns:1fr 1fr 1fr 1fr}.match-expression-header-matching[data-v-6b569773]:not(.view),.match-expression-row-matching[data-v-6b569773]:not(.view){grid-template-columns:1fr 1fr 1fr 1fr 100px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".password[data-v-3b3998e6]{display:flex;flex-direction:column}.password .labeled-input .addon[data-v-3b3998e6]{display:flex;align-items:center;justify-content:center;padding-left:12px;min-width:65px}.password .labeled-input .addon .hide-show[data-v-3b3998e6]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:4px}.password .genPassword[data-v-3b3998e6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-tabs.view[data-v-4f2c6329] .tabs.horizontal{border:none}.resource-tabs.view[data-v-4f2c6329] .tabs.horizontal+.tab-container{border:none;border-top:1px solid var(--border);padding:0;padding-top:24px}.tab-caption[data-v-4f2c6329]{align-items:center;font-size:16px;margin-bottom:24px}.tab-caption .namespace-name[data-v-4f2c6329]{display:inline;font-weight:700;margin-right:0 4px;white-space:nowrap}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*!\n * vue-draggable-next v2.3.0\n * (c) 2025 Anish George\n * @license MIT\n */\nimport { defineComponent, ref, computed, getCurrentInstance, onMounted, h, resolveComponent, nextTick } from 'vue';\n\nfunction getConsole() {\n if (typeof window !== 'undefined') {\n return window.console;\n }\n return global.console;\n}\nconst console = getConsole();\nfunction cached(fn) {\n const cache = Object.create(null);\n return function cachedFn(str) {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst regex = /-(\\w)/g;\nconst camelize = cached((str) => str.replace(regex, (_, c) => (c ? c.toUpperCase() : '')));\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\nfunction insertNodeAt(fatherNode, node, position) {\n const refNode = position === 0\n ? fatherNode.children[0]\n : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n/**!\n * Sortable 1.14.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar version = \"1.14.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\n// Utility functions remain outside component\nfunction computeVmIndex(vnodes, element) {\n return Object.values(vnodes).indexOf(element);\n}\nfunction computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n const elmFromNodes = Object.values(slots);\n const footerIndex = children.length - footerOffset;\n const rawIndexes = [...children].map((elt, idx) => idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt));\n return rawIndexes;\n}\nfunction isTransitionName(name) {\n return ['transition-group', 'TransitionGroup'].includes(name);\n}\nfunction isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n const [{ type }] = slots;\n if (!type) {\n return false;\n }\n return isTransitionName(type.name);\n}\nfunction getComponentAttributes($attrs, componentData) {\n if (!componentData) {\n return $attrs;\n }\n return { ...componentData.props, ...componentData.attrs };\n}\nconst eventsListened = ['Start', 'Add', 'Remove', 'Update', 'End'];\nconst eventsToEmit = ['Choose', 'Unchoose', 'Sort', 'Filter', 'Clone'];\nconst readonlyProperties = ['Move', ...eventsListened, ...eventsToEmit].map(evt => 'on' + evt);\nlet draggingElement = null;\nconst VueDraggableNext = defineComponent({\n name: 'VueDraggableNext',\n inheritAttrs: false,\n props: {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null,\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false,\n },\n clone: {\n type: Function,\n default: (original) => {\n return original;\n },\n },\n tag: {\n type: String,\n default: 'div',\n },\n move: {\n type: Function,\n default: null,\n },\n componentData: {\n type: Object,\n required: false,\n default: null,\n },\n component: {\n type: String,\n default: null,\n },\n modelValue: {\n type: Array,\n required: false,\n default: null,\n },\n },\n emits: [\n 'update:modelValue',\n 'move',\n 'change',\n ...eventsListened.map(s => s.toLowerCase()),\n ...eventsToEmit.map(s => s.toLowerCase()),\n ],\n setup(props, { emit, slots, attrs }) {\n // Reactive state\n const transitionMode = ref(false);\n const noneFunctionalComponentMode = ref(false);\n const headerOffset = ref(0);\n const footerOffset = ref(0);\n const visibleIndexes = ref([]);\n const context = ref(null);\n const sortableInstance = ref(null);\n // Computed reactive list source\n const realList = computed(() => props.list ? props.list : props.modelValue);\n // Current component instance (access to $el etc.)\n const instance = getCurrentInstance();\n // getTag function converts to computed or normal function here\n function getTag() {\n return props.component ? resolveComponent(props.component) : props.tag;\n }\n function updateOptions(newOptionValue) {\n if (!sortableInstance.value)\n return;\n for (const property in newOptionValue) {\n const value = camelize(property);\n if (readonlyProperties.indexOf(value) === -1) {\n sortableInstance.value.option(value, newOptionValue[property]);\n }\n }\n }\n function getChildrenNodes() {\n return instance?.proxy?.$el.children || [];\n }\n async function computeIndexesFn() {\n await nextTick();\n visibleIndexes.value = computeIndexes(getChildrenNodes(), (instance?.proxy?.$el.children || []), transitionMode.value, footerOffset.value);\n }\n function getUnderlyingVm(htmlElt) {\n const index = computeVmIndex(getChildrenNodes() || [], htmlElt);\n if (index === -1) {\n return null;\n }\n const element = realList.value ? realList.value[index] : null;\n return { index, element };\n }\n function emitChanges(evt) {\n nextTick(() => emit('change', evt));\n }\n function alterList(onList) {\n if (props.list) {\n onList(props.list);\n return;\n }\n const newList = [...(props.modelValue || [])];\n onList(newList);\n emit('update:modelValue', newList);\n }\n function spliceList(...args) {\n const spliceList = (list) => list.splice(...args);\n alterList(spliceList);\n }\n function updatePosition(oldIndex, newIndex) {\n const updatePosition = (list) => list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n alterList(updatePosition);\n }\n function getVmIndex(domIndex) {\n const indexes = visibleIndexes.value;\n const numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n }\n function getComponent() {\n if (!slots.default)\n return null;\n const sl = slots.default();\n return sl[0]?.component?.proxy || null;\n }\n function resetTransitionData(index) {\n if (!props.noTransitionOnDrag || !transitionMode.value)\n return;\n const nodes = getChildrenNodes();\n if (nodes[index]) {\n nodes[index].data = null;\n }\n const transitionContainer = getComponent();\n if (transitionContainer) {\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n }\n }\n function onDragStart(evt) {\n computeIndexesFn();\n context.value = getUnderlyingVm(evt.item);\n if (!context.value)\n return;\n evt.item._underlying_vm_ = props.clone(context.value.element);\n draggingElement = evt.item;\n }\n function onDragAdd(evt) {\n const element = evt.item._underlying_vm_;\n if (element === undefined)\n return;\n removeNode(evt.item);\n const newIndex = getVmIndex(evt.newIndex);\n spliceList(newIndex, 0, element);\n computeIndexesFn();\n emitChanges({ added: { element, newIndex } });\n }\n function onDragRemove(evt) {\n insertNodeAt(instance?.proxy?.$el, evt.item, evt.oldIndex);\n if (evt.pullMode === 'clone') {\n removeNode(evt.clone);\n return;\n }\n if (!context.value)\n return;\n const oldIndex = context.value.index;\n spliceList(oldIndex, 1);\n resetTransitionData(oldIndex);\n emitChanges({ removed: { element: context.value.element, oldIndex } });\n }\n function onDragUpdate(evt) {\n removeNode(evt.item);\n insertNodeAt(evt.from, evt.item, evt.oldIndex);\n const oldIndex = context.value?.index;\n const newIndex = getVmIndex(evt.newIndex);\n updatePosition(oldIndex, newIndex);\n emitChanges({\n moved: { element: context.value?.element, oldIndex, newIndex },\n });\n }\n function updateProperty(evt, propertyName) {\n if (Object.prototype.hasOwnProperty.call(evt, propertyName))\n evt[propertyName] += headerOffset.value;\n }\n function getTargetedComponent(htmlElement) {\n return htmlElement.__draggable_component__;\n }\n function getRelatedContextFromMoveEvent({ to, related, }) {\n const component = getTargetedComponent(to);\n if (!component) {\n return { component };\n }\n const list = component.realList;\n const contextLocal = { list, component };\n if (to !== related && list && component.getUnderlyingVm) {\n const destination = component.getUnderlyingVm(related);\n if (destination) {\n return Object.assign(destination, contextLocal);\n }\n }\n return contextLocal;\n }\n function computeFutureIndex(relatedContext, evt) {\n const domChildren = [...evt.to.children].filter((el) => el.style['display'] !== 'none');\n if (domChildren.length === 0)\n return 0;\n const currentDOMIndex = domChildren.indexOf(evt.related);\n const currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n const draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter\n ? currentIndex\n : currentIndex + 1;\n }\n const mounted = () => {\n const optionsAdded = {};\n eventsListened.forEach(elt => {\n optionsAdded['on' + elt] = delegateAndEmit(elt);\n });\n eventsToEmit.forEach(elt => {\n optionsAdded['on' + elt] = emitEvent.bind(null, elt);\n });\n const attributes = Object.keys(attrs).reduce((res, key) => {\n res[camelize(key)] = attrs[key];\n return res;\n }, {});\n const options = Object.assign({}, attributes, optionsAdded, {\n onMove: (evt, originalEvent) => {\n return onDragMove(evt, originalEvent);\n },\n });\n if (!('draggable' in options)) {\n options.draggable = '>*';\n }\n const targetDomElement = instance?.proxy?.$el.nodeType === 1\n ? instance.proxy.$el\n : instance?.proxy?.$el.parentElement || null;\n if (targetDomElement) {\n sortableInstance.value = new Sortable(targetDomElement, options);\n targetDomElement.__draggable_component__ = instance?.proxy;\n computeIndexesFn();\n }\n };\n function emitEvent(evtName, evtData) {\n nextTick(() => emit(evtName.toLowerCase(), evtData));\n }\n function delegateAndEmit(evtName) {\n return (evtData) => {\n if (realList.value !== null) {\n // call handler like onDragStart etc. if available\n const handlerName = 'onDrag' + evtName;\n const handler = methods[handlerName];\n if (handler) {\n handler(evtData);\n }\n }\n emitEvent(evtName, evtData);\n };\n }\n function onDragMove(evt, originalEvent) {\n const onMove = props.move;\n if (!onMove || !realList.value) {\n return true;\n }\n const relatedContext = getRelatedContextFromMoveEvent(evt);\n const draggedContext = context.value;\n const futureIndex = computeFutureIndex(relatedContext, evt);\n if (draggedContext) {\n Object.assign(draggedContext, { futureIndex });\n }\n const sendEvt = Object.assign({}, evt, {\n relatedContext,\n draggedContext,\n });\n return onMove(sendEvt, originalEvent);\n }\n function onDragEnd() {\n computeIndexesFn();\n draggingElement = null;\n }\n // You can group 'methods' into an object for delegateAndEmit references if needed\n const methods = {\n onDragStart,\n onDragAdd,\n onDragRemove,\n onDragUpdate,\n onDragMove,\n onDragEnd,\n };\n onMounted(() => {\n // Call setup's mounted method\n mounted();\n });\n // created lifecycle equivalent (run synchronously)\n if (props.list !== null && props.modelValue !== null) {\n console.error('list props are mutually exclusive! Please set one.');\n }\n // Expose what you want accessible in template / render\n return {\n getTag,\n realList,\n visibleIndexes,\n noneFunctionalComponentMode,\n headerOffset,\n footerOffset,\n transitionMode,\n computeIndexes: computeIndexesFn,\n updateOptions,\n getChildrenNodes,\n getUnderlyingVm,\n emitChanges,\n alterList,\n spliceList,\n updatePosition,\n getVmIndex,\n getComponent,\n resetTransitionData,\n onDragStart,\n onDragAdd,\n onDragRemove,\n onDragUpdate,\n updateProperty,\n onDragMove,\n onDragEnd,\n mounted,\n context,\n sortableInstance,\n getRelatedContextFromMoveEvent,\n getTargetedComponent,\n computeFutureIndex,\n // ... other exposed functions as needed\n };\n // Vue 3 lifecycle hooks outside setup\n },\n render() {\n const tag = this.getTag();\n const attrs = getComponentAttributes(this.$attrs, this.componentData);\n // For HTML tags, call the slot function and pass the result\n if (typeof tag === 'string') {\n const slots = this.$slots.default && typeof this.$slots.default === 'function'\n ? this.$slots.default()\n : null;\n if (!slots)\n return h(tag, attrs, []);\n this.transitionMode = isTransition(slots);\n return h(tag, attrs, slots);\n }\n // For components, pass the slot functions, not their results\n const slotFunctions = this.$slots.default\n ? { default: this.$slots.default }\n : {};\n if (this.$slots.default) {\n const slotResult = typeof this.$slots.default === 'function' ? this.$slots.default() : null;\n this.transitionMode = isTransition(slotResult || []);\n }\n return h(tag, attrs, slotFunctions);\n },\n});\n\n/**\n * TypeScript definitions for vue-draggable-next\n * Provides comprehensive type support for all component features\n */\n// Type guards\nfunction isDraggableEvent(event) {\n return event && typeof event === 'object' && 'item' in event;\n}\nfunction isChangeEvent(event) {\n return (event &&\n typeof event === 'object' &&\n ('added' in event || 'removed' in event || 'moved' in event));\n}\nfunction isMoveEvent(event) {\n return (event &&\n typeof event === 'object' &&\n 'draggedContext' in event &&\n 'relatedContext' in event);\n}\n// Default values\nconst DEFAULT_PROPS = {\n tag: 'div',\n sort: true,\n disabled: false,\n animation: 0,\n ghostClass: '',\n chosenClass: '',\n dragClass: '',\n delay: 0,\n delayOnTouchStart: false,\n touchStartThreshold: 5,\n forceFallback: false,\n fallbackTolerance: 0,\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true,\n};\n// Validation helpers\nfunction validateProps(props) {\n const errors = [];\n if (props.list && props.modelValue) {\n errors.push('Cannot use both \"list\" and \"modelValue\" props simultaneously');\n }\n if (props.animation && (props.animation < 0 || props.animation > 3000)) {\n errors.push('Animation duration should be between 0 and 3000ms');\n }\n if (props.delay && props.delay < 0) {\n errors.push('Delay must be a positive number');\n }\n return errors;\n}\n\nexport { DEFAULT_PROPS, VueDraggableNext, isChangeEvent, isDraggableEvent, isMoveEvent, validateProps };\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PopoverCard.vue?vue&type=style&index=0&id=478de802&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-478de802\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\nconst _hoisted_2 = [\"for\"]\nconst _hoisted_3 = [\"id\"]\nconst _hoisted_4 = [\"id\"]\n\n\nexport interface Props {\n resource: any;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ResourcePopoverCard',\n props: {\n resource: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst getGlanceItemValueId = (glanceItem: any): string => `value-${ glanceItem.label }:${ glanceItem.content }`.toLowerCase().replaceAll(' ', '');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"resource-popover-card\",\n title: __props.resource.nameDisplay\n }, [\n _createElementVNode(\"div\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.resource.glance, (glanceItem, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: glanceItem.label,\n class: \"row\"\n }, [\n _createElementVNode(\"label\", {\n class: \"label text-deemphasized\",\n for: getGlanceItemValueId(glanceItem)\n }, _toDisplayString(glanceItem.label), 9, _hoisted_2),\n _createElementVNode(\"div\", {\n id: getGlanceItemValueId(glanceItem),\n class: \"value\"\n }, [\n (glanceItem.formatter)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(glanceItem.formatter), _mergeProps({\n key: 0,\n ref_for: true\n }, glanceItem.formatterOpts, {\n id: i === 0 ? 'first-glance-item' : undefined,\n value: glanceItem.content\n }), null, 16, [\"id\", \"value\"]))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n id: i === 0 ? 'first-glance-item' : undefined\n }, _toDisplayString(glanceItem.content), 9, _hoisted_4))\n ], 8, _hoisted_3)\n ]))\n }), 128))\n ])\n ], 8, _hoisted_1))\n}\n}\n\n})","\n\n\n\n\n \n
\n
\n
\n {{ glanceItem.label }}\n \n
\n \n \n {{ glanceItem.content }}\n \n
\n
\n
\n
\n \n\n\n","import script from \"./ResourcePopoverCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ResourcePopoverCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ResourcePopoverCard.vue?vue&type=style&index=0&id=5a4582e5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a4582e5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createSlots as _createSlots, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 1 }\nconst _hoisted_2 = { key: 1 }\n\n\nimport { useFetch } from '@shell/components/Resource/Detail/FetchLoader/composables';\nimport { useStore } from 'vuex';\nimport ResourcePopoverCard from '@shell/components/Resource/Detail/ResourcePopover/ResourcePopoverCard.vue';\nimport RcStatusIndicator from '@components/Pill/RcStatusIndicator/RcStatusIndicator.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { computed, ref } from 'vue';\nimport PopoverCard from '@shell/components/PopoverCard.vue';\nimport ActionMenu from '@shell/components/ActionMenuShell.vue';\n\nexport interface Props {\n type: string;\n id: string;\n currentStore?: string;\n detailLocation?: object;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n type: {},\n id: {},\n currentStore: {},\n detailLocation: {}\n },\n setup(__props: any) {\n\nconst store = useStore();\nconst i18n = useI18n(store);\nconst props = __props;\nconst card = ref(null);\nconst showPopover = ref(false);\n\nconst fetch = useFetch(async() => {\n const currentStore = props.currentStore || store.getters['currentStore'](props.type);\n\n const r = await store.dispatch(`${ currentStore }/find`, { type: props.type, id: props.id });\n\n return r;\n});\n\nconst stateBackground = computed(() => {\n return fetch.value.data?.stateSimpleColor || 'unknown';\n});\n\nconst resourceTypeLabel = computed(() => {\n if (!fetch.value.data) {\n return '';\n }\n\n const resource = fetch.value.data;\n const currentStore = store.getters['currentStore'](resource.type);\n const schema = store.getters[`${ currentStore }/schemaFor`](resource.type);\n\n return resource.parentNameOverride || store.getters['type-map/labelFor'](schema);\n});\n\nconst nameDisplay = computed(() => {\n return fetch.value.data?.nameDisplay || '';\n});\n\nconst actionInvoked = () => {\n showPopover.value = false;\n};\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (!_unref(fetch).error)\n ? (_openBlock(), _createBlock(PopoverCard, {\n key: 0,\n class: \"resource-popover\",\n \"card-title\": nameDisplay.value,\n \"fallback-focus\": \"[data-testid='resource-popover-action-menu']\",\n \"show-popover-aria-label\": _unref(i18n).t('component.resource.detail.glance.ariaLabel.showDetails', { name: nameDisplay.value, resource: resourceTypeLabel.value })\n }, _createSlots({\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, [\n (_unref(fetch).data)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"display\",\n onMouseenter: _cache[0] || (_cache[0] = ($event: any) => (showPopover.value=true))\n }, [\n _createVNode(RcStatusIndicator, {\n shape: \"disc\",\n status: stateBackground.value\n }, null, 8, [\"status\"]),\n _createVNode(_component_router_link, {\n to: props.detailLocation || _unref(fetch).data.detailLocation || '#'\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(nameDisplay.value), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ], 32))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _toDisplayString(_unref(fetch).loading) + \"...\", 1))\n ])\n ]),\n _: 2\n }, [\n (_unref(fetch).data)\n ? {\n name: \"heading-action\",\n fn: _withCtx(({close}) => [\n _createVNode(ActionMenu, {\n resource: _unref(fetch).data,\n \"button-aria-label\": _unref(i18n).t('component.resource.detail.glance.ariaLabel.actionMenu', { resource: nameDisplay.value }),\n \"data-testid\": \"resource-popover-action-menu\",\n onActionInvoked: close\n }, null, 8, [\"resource\", \"button-aria-label\", \"onActionInvoked\"])\n ]),\n key: \"0\"\n }\n : undefined,\n (_unref(fetch).data)\n ? {\n name: \"card-body\",\n fn: _withCtx(() => [\n _createVNode(ResourcePopoverCard, {\n id: \"resource-popover-card\",\n ref_key: \"card\",\n ref: card,\n resource: _unref(fetch).data,\n onActionInvoked: actionInvoked\n }, null, 8, [\"resource\"])\n ]),\n key: \"1\"\n }\n : undefined\n ]), 1032, [\"card-title\", \"show-popover-aria-label\"]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(props.id), 1))\n}\n}\n\n})","\n\n\n\n\n \n \n \n \n \n {{ nameDisplay }}\n \n \n {{ fetch.loading }}... \n \n \n \n \n \n \n \n \n {{ props.id }} \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=38c967c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-38c967c6\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"rc-status-indicator\" }\n\nimport { toRef } from 'vue';\nimport { RcStatusIndicatorProps } from './types';\nimport { useStatusColors } from '@components/utils/status';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcStatusIndicator',\n props: {\n shape: {},\n status: {}\n },\n setup(__props: any) {\n\n_useCssVars(_ctx => ({\n \"v5b89734f\": (_unref(backgroundColor)),\n \"v34875fde\": (_unref(borderColor))\n}))\n\nconst props = __props;\n\nconst status = toRef(props, 'status');\nconst { backgroundColor, borderColor } = useStatusColors(status, 'solid');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape\", {[props.shape]: true, [props.status]: true}])\n }, null, 2)\n ]))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcStatusIndicator.vue?vue&type=style&index=0&id=673187c5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-673187c5\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".popover-card-base[data-v-478de802]{position:relative;width:100%}.popover-card-base .popover-card[data-v-478de802]{border:none}.popover-card-base .display-container[data-v-478de802]{position:absolute;left:0;right:0;top:0;bottom:0}.popover-card-base .display[data-v-478de802]{display:inline-flex;max-width:100%}.popover-card-base .display a[data-v-478de802]{flex:1}.popover-card-base .popover-card-target[data-v-478de802]{height:17px;display:inline-block}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]{margin-left:4px;margin-right:2px;padding:0;width:0;height:auto;min-height:auto;overflow:hidden;border-width:0}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]:focus{width:auto;border-width:1px}.popover-card-base .popover-card-base[data-v-478de802]{border:none}.popover-card-base .popover-card-container[data-v-478de802]{position:absolute;height:10px;bottom:-10px}.popover-card-base.open .popover-card-container[data-v-478de802]{width:100%}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link{padding:0;min-height:auto;line-height:normal}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link:hover{background:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper{border-radius:6px;box-shadow:4px 4px 8px 0 rgba(0,0,0,.04)}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper .v-popper__arrow-container{display:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner{overflow:initial}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner,.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner>div>.dropdownTarget{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-popover-card[data-v-5a4582e5]{width:288px}.resource-popover-card .dropdown-item[data-v-5a4582e5]{display:inline-block;padding:0;margin:0;border:none}.resource-popover-card .dropdown-item[data-v-5a4582e5]:hover{background:none}.resource-popover-card[data-v-5a4582e5] .badge-state{height:20px;font-size:12px}.resource-popover-card[data-v-5a4582e5] .heading{height:24px}.resource-popover-card[data-v-5a4582e5] .heading .title{font-size:16px;font-weight:600;line-height:24px}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button,.resource-popover-card[data-v-5a4582e5] .v-popper{height:24px;min-height:auto;padding:0}.resource-popover-card[data-v-5a4582e5] .v-popper{padding:0}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button.variant-ghost{color:#141419;padding:0 12px}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button.variant-ghost i{display:inline-flex;justify-content:center;font-size:12px;width:2.5px}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button.variant-ghost:hover{background-color:transparent}.resource-popover-card .row[data-v-5a4582e5]{display:flex;flex-direction:row;line-height:21px}.resource-popover-card .row[data-v-5a4582e5]:not(:first-of-type){margin-top:4px}.resource-popover-card .row .label[data-v-5a4582e5]{width:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-popover[data-v-38c967c6]{position:relative;width:100%}.resource-popover .display[data-v-38c967c6]{display:inline-flex;align-items:center;max-width:100%}.resource-popover .display a[data-v-38c967c6]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.resource-popover .rc-status-indicator[data-v-38c967c6]{flex-shrink:0;margin-right:12px;height:auto;line-height:normal}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-status-indicator[data-v-673187c5]{display:inline-flex;align-items:center;justify-content:center;height:21px}.rc-status-indicator .shape[data-v-673187c5]{display:inline-block;border:1px solid transparent}.rc-status-indicator .shape.disc[data-v-673187c5]{width:8px;height:8px;border-radius:50%}.rc-status-indicator .shape.horizontal-bar[data-v-673187c5]{width:16px;height:4px;border-radius:2px}.rc-status-indicator .shape.vertical-bar[data-v-673187c5]{width:4px;height:16px;border-radius:2px}.rc-status-indicator .shape[data-v-673187c5]{background-color:var(--v5b89734f);border-color:var(--v34875fde)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PopoverCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PopoverCard.vue?vue&type=style&index=0&id=478de802&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-478de802\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\nconst _hoisted_2 = [\"for\"]\nconst _hoisted_3 = [\"id\"]\nconst _hoisted_4 = [\"id\"]\n\n\nexport interface Props {\n resource: any;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ResourcePopoverCard',\n props: {\n resource: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst getGlanceItemValueId = (glanceItem: any): string => `value-${ glanceItem.label }:${ glanceItem.content }`.toLowerCase().replaceAll(' ', '');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"resource-popover-card\",\n title: __props.resource.nameDisplay\n }, [\n _createElementVNode(\"div\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.resource.glance, (glanceItem, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: glanceItem.label,\n class: \"row\"\n }, [\n _createElementVNode(\"label\", {\n class: \"label text-deemphasized\",\n for: getGlanceItemValueId(glanceItem)\n }, _toDisplayString(glanceItem.label), 9, _hoisted_2),\n _createElementVNode(\"div\", {\n id: getGlanceItemValueId(glanceItem),\n class: \"value\"\n }, [\n (glanceItem.formatter)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(glanceItem.formatter), _mergeProps({\n key: 0,\n ref_for: true\n }, glanceItem.formatterOpts, {\n id: i === 0 ? 'first-glance-item' : undefined,\n value: glanceItem.content\n }), null, 16, [\"id\", \"value\"]))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n id: i === 0 ? 'first-glance-item' : undefined\n }, _toDisplayString(glanceItem.content), 9, _hoisted_4))\n ], 8, _hoisted_3)\n ]))\n }), 128))\n ])\n ], 8, _hoisted_1))\n}\n}\n\n})","\n\n\n\n\n \n
\n
\n
\n {{ glanceItem.label }}\n \n
\n \n \n {{ glanceItem.content }}\n \n
\n
\n
\n
\n \n\n\n","import script from \"./ResourcePopoverCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ResourcePopoverCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ResourcePopoverCard.vue?vue&type=style&index=0&id=5a4582e5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a4582e5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createSlots as _createSlots, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 1 }\nconst _hoisted_2 = { key: 1 }\n\n\nimport { useFetch } from '@shell/components/Resource/Detail/FetchLoader/composables';\nimport { useStore } from 'vuex';\nimport ResourcePopoverCard from '@shell/components/Resource/Detail/ResourcePopover/ResourcePopoverCard.vue';\nimport RcStatusIndicator from '@components/Pill/RcStatusIndicator/RcStatusIndicator.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { computed, ref } from 'vue';\nimport PopoverCard from '@shell/components/PopoverCard.vue';\nimport ActionMenu from '@shell/components/ActionMenuShell.vue';\n\nexport interface Props {\n type: string;\n id: string;\n currentStore?: string;\n detailLocation?: object;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n type: {},\n id: {},\n currentStore: {},\n detailLocation: {}\n },\n setup(__props: any) {\n\nconst store = useStore();\nconst i18n = useI18n(store);\nconst props = __props;\nconst card = ref(null);\nconst showPopover = ref(false);\n\nconst fetch = useFetch(async() => {\n const currentStore = props.currentStore || store.getters['currentStore'](props.type);\n\n const r = await store.dispatch(`${ currentStore }/find`, { type: props.type, id: props.id });\n\n return r;\n});\n\nconst stateBackground = computed(() => {\n return fetch.value.data?.stateSimpleColor || 'unknown';\n});\n\nconst resourceTypeLabel = computed(() => {\n if (!fetch.value.data) {\n return '';\n }\n\n const resource = fetch.value.data;\n const currentStore = store.getters['currentStore'](resource.type);\n const schema = store.getters[`${ currentStore }/schemaFor`](resource.type);\n\n return resource.parentNameOverride || store.getters['type-map/labelFor'](schema);\n});\n\nconst nameDisplay = computed(() => {\n return fetch.value.data?.nameDisplay || '';\n});\n\nconst actionInvoked = () => {\n showPopover.value = false;\n};\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (!_unref(fetch).error)\n ? (_openBlock(), _createBlock(PopoverCard, {\n key: 0,\n class: \"resource-popover\",\n \"card-title\": nameDisplay.value,\n \"fallback-focus\": \"[data-testid='resource-popover-action-menu']\",\n \"show-popover-aria-label\": _unref(i18n).t('component.resource.detail.glance.ariaLabel.showDetails', { name: nameDisplay.value, resource: resourceTypeLabel.value })\n }, _createSlots({\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, [\n (_unref(fetch).data)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"display\",\n onMouseenter: _cache[0] || (_cache[0] = ($event: any) => (showPopover.value=true))\n }, [\n _createVNode(RcStatusIndicator, {\n shape: \"disc\",\n status: stateBackground.value\n }, null, 8, [\"status\"]),\n _createVNode(_component_router_link, {\n to: props.detailLocation || _unref(fetch).data.detailLocation || '#'\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(nameDisplay.value), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ], 32))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _toDisplayString(_unref(fetch).loading) + \"...\", 1))\n ])\n ]),\n _: 2\n }, [\n (_unref(fetch).data)\n ? {\n name: \"heading-action\",\n fn: _withCtx(({close}) => [\n _createVNode(ActionMenu, {\n resource: _unref(fetch).data,\n \"button-aria-label\": _unref(i18n).t('component.resource.detail.glance.ariaLabel.actionMenu', { resource: nameDisplay.value }),\n \"data-testid\": \"resource-popover-action-menu\",\n onActionInvoked: close\n }, null, 8, [\"resource\", \"button-aria-label\", \"onActionInvoked\"])\n ]),\n key: \"0\"\n }\n : undefined,\n (_unref(fetch).data)\n ? {\n name: \"card-body\",\n fn: _withCtx(() => [\n _createVNode(ResourcePopoverCard, {\n id: \"resource-popover-card\",\n ref_key: \"card\",\n ref: card,\n resource: _unref(fetch).data,\n onActionInvoked: actionInvoked\n }, null, 8, [\"resource\"])\n ]),\n key: \"1\"\n }\n : undefined\n ]), 1032, [\"card-title\", \"show-popover-aria-label\"]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(props.id), 1))\n}\n}\n\n})","\n\n\n\n\n \n \n \n \n \n {{ nameDisplay }}\n \n \n {{ fetch.loading }}... \n \n \n \n \n \n \n \n \n {{ props.id }} \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=38c967c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-38c967c6\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"rc-status-indicator\" }\n\nimport { toRef } from 'vue';\nimport { RcStatusIndicatorProps } from './types';\nimport { useStatusColors } from '@components/utils/status';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcStatusIndicator',\n props: {\n shape: {},\n status: {}\n },\n setup(__props: any) {\n\n_useCssVars(_ctx => ({\n \"v5b89734f\": (_unref(backgroundColor)),\n \"v34875fde\": (_unref(borderColor))\n}))\n\nconst props = __props;\n\nconst status = toRef(props, 'status');\nconst { backgroundColor, borderColor } = useStatusColors(status, 'solid');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape\", {[props.shape]: true, [props.status]: true}])\n }, null, 2)\n ]))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcStatusIndicator.vue?vue&type=style&index=0&id=673187c5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-673187c5\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".popover-card-base[data-v-478de802]{position:relative;width:100%}.popover-card-base .popover-card[data-v-478de802]{border:none}.popover-card-base .display-container[data-v-478de802]{position:absolute;left:0;right:0;top:0;bottom:0}.popover-card-base .display[data-v-478de802]{display:inline-flex;max-width:100%}.popover-card-base .display a[data-v-478de802]{flex:1}.popover-card-base .popover-card-target[data-v-478de802]{height:17px;display:inline-block}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]{margin-left:4px;margin-right:2px;padding:0;width:0;height:auto;min-height:auto;overflow:hidden;border-width:0}.popover-card-base .rc-button.btn.focus-button[data-v-478de802]:focus{width:auto;border-width:1px}.popover-card-base .popover-card-base[data-v-478de802]{border:none}.popover-card-base .popover-card-container[data-v-478de802]{position:absolute;height:10px;bottom:-10px}.popover-card-base.open .popover-card-container[data-v-478de802]{width:100%}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link{padding:0;min-height:auto;line-height:normal}.popover-card-base[data-v-478de802] >.v-popper>.btn.variant-link:hover{background:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper{border-radius:6px;box-shadow:4px 4px 8px 0 rgba(0,0,0,.04)}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper .v-popper__arrow-container{display:none}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner{overflow:initial}.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner,.popover-card-base[data-v-478de802] .popover-card-container>.v-popper__popper>.v-popper__wrapper>.v-popper__inner>div>.dropdownTarget{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-popover-card[data-v-5a4582e5]{width:288px}.resource-popover-card .dropdown-item[data-v-5a4582e5]{display:inline-block;padding:0;margin:0;border:none}.resource-popover-card .dropdown-item[data-v-5a4582e5]:hover{background:none}.resource-popover-card[data-v-5a4582e5] .badge-state{height:20px;font-size:12px}.resource-popover-card[data-v-5a4582e5] .heading{height:24px}.resource-popover-card[data-v-5a4582e5] .heading .title{font-size:16px;font-weight:600;line-height:24px}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button,.resource-popover-card[data-v-5a4582e5] .v-popper{height:24px;min-height:auto;padding:0}.resource-popover-card[data-v-5a4582e5] .v-popper{padding:0}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button.variant-ghost{color:#141419;padding:0 12px}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button.variant-ghost i{display:inline-flex;justify-content:center;font-size:12px;width:2.5px}.resource-popover-card[data-v-5a4582e5] .btn.variant-link.rc-button.variant-ghost:hover{background-color:transparent}.resource-popover-card .row[data-v-5a4582e5]{display:flex;flex-direction:row;line-height:21px}.resource-popover-card .row[data-v-5a4582e5]:not(:first-of-type){margin-top:4px}.resource-popover-card .row .label[data-v-5a4582e5]{width:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-popover[data-v-38c967c6]{position:relative;width:100%}.resource-popover .display[data-v-38c967c6]{display:inline-flex;align-items:center;max-width:100%}.resource-popover .display a[data-v-38c967c6]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.resource-popover .rc-status-indicator[data-v-38c967c6]{flex-shrink:0;margin-right:12px;height:auto;line-height:normal}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-status-indicator[data-v-673187c5]{display:inline-flex;align-items:center;justify-content:center;height:21px}.rc-status-indicator .shape[data-v-673187c5]{display:inline-block;border:1px solid transparent}.rc-status-indicator .shape.disc[data-v-673187c5]{width:8px;height:8px;border-radius:50%}.rc-status-indicator .shape.horizontal-bar[data-v-673187c5]{width:16px;height:4px;border-radius:2px}.rc-status-indicator .shape.vertical-bar[data-v-673187c5]{width:4px;height:16px;border-radius:2px}.rc-status-indicator .shape[data-v-673187c5]{background-color:var(--v5b89734f);border-color:var(--v34875fde)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./Scaler.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Scaler.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Scaler.vue?vue&type=style&index=0&id=085e4f82&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-085e4f82\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"status-bar\" }\n\nimport { stateColorCssVar, StateColor } from '@shell/utils/style';\n\nexport interface Segment {\n color: StateColor;\n percent: number;\n}\n\nexport interface Props {\n segments: Segment[]\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'StatusBar',\n props: {\n segments: {}\n },\n setup(__props: any) {\n\n\n\nconst computeStyle = (segment: Segment) => {\n return {\n backgroundColor: stateColorCssVar(segment.color),\n width: `${ segment.percent }%`\n };\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.segments, (segment, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: i,\n class: \"segment\",\n style: _normalizeStyle(computeStyle(segment))\n }, \" \", 4))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./StatusBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatusBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatusBar.vue?vue&type=style&index=0&id=35f1c212&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35f1c212\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"count\" }\n\nimport { RcCounterBadgeProps } from './types';\nimport { computed } from 'vue';\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcCounterBadge',\n props: {\n count: {},\n type: {},\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props;\nconst displayCount = computed(() => props.count < 1000 ? props.count : '999+');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"rc-counter-badge\", {[props.type]: true, disabled: props.disabled}]),\n \"data-testid\": \"rc-counter-badge\"\n }, [\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(displayCount.value), 1)\n ], 2))\n}\n}\n\n})","\n\n\n \n {{ displayCount }} \n
\n \n\n\n","import script from \"./RcCounterBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcCounterBadge.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcCounterBadge.vue?vue&type=style&index=0&id=6a95ec9c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6a95ec9c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"status-row\" }\nconst _hoisted_2 = { class: \"label\" }\nconst _hoisted_3 = { class: \"count\" }\nconst _hoisted_4 = { class: \"percent text-muted\" }\n\nimport { RcCounterBadge } from '@components/Pill';\nimport { StateColor, stateColorCssVar } from '@shell/utils/style';\n\nexport interface Props {\n color: StateColor;\n label: string;\n count: number;\n percent: number;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'StatusRow',\n props: {\n color: {},\n label: {},\n count: {},\n percent: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"indicator\",\n style: _normalizeStyle({backgroundColor: _unref(stateColorCssVar)(__props.color)})\n }, null, 4),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(__props.label), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(RcCounterBadge), {\n count: __props.count,\n type: \"inactive\"\n }, null, 8, [\"count\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(__props.percent.toFixed(1)) + \"% \", 1)\n ]))\n}\n}\n\n})","\n\n\n \n
\n
\n {{ label }}\n
\n
\n \n
\n
\n {{ percent.toFixed(1) }}%\n
\n
\n \n\n\n","import script from \"./StatusRow.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatusRow.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatusRow.vue?vue&type=style&index=0&id=377b897a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-377b897a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withCtx as _withCtx, createSlots as _createSlots } from \"vue\"\n\nconst _hoisted_1 = {\n key: 2,\n class: \"pod-distribution\"\n}\nconst _hoisted_2 = {\n key: 3,\n class: \"text-deemphasized\"\n}\n\n\nimport Card from '@shell/components/Resource/Detail/Card/index.vue';\nimport Scaler from '@shell/components/Resource/Detail/Card/Scaler.vue';\nimport VerticalGap from '@shell/components/Resource/Detail/Card/VerticalGap.vue';\nimport StatusBar from '@shell/components/Resource/Detail/StatusBar.vue';\nimport StatusRow from '@shell/components/Resource/Detail/StatusRow.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { StateColor } from '@shell/utils/style';\nimport { computed } from 'vue';\nimport { useStore } from 'vuex';\n\nexport interface Props {\n title: string;\n resources?: any[];\n showScaling?: boolean;\n noResourcesMessage?: string;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n title: {},\n resources: { default: undefined },\n showScaling: { type: Boolean, default: false },\n noResourcesMessage: { default: undefined }\n },\n emits: ['decrease', 'increase'],\n setup(__props: any, { emit: __emit }) {\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst props = __props;\nconst emit = __emit;\n\nconst segmentAccumulator = computed(() => {\n interface Value {\n count: number;\n }\n const accumulator: {[key in StateColor]?: Value} = {};\n\n props.resources?.forEach((resource: any) => {\n const color: StateColor = resource.stateSimpleColor;\n\n accumulator[color] = accumulator[color] || { count: 0 };\n accumulator[color].count++;\n });\n\n return accumulator;\n});\n\nconst rowAccumulator = computed(() => {\n interface Value {\n count: number;\n color: StateColor;\n }\n const accumulator: {[key in string]: Value} = {};\n\n props.resources?.forEach((resource: any) => {\n accumulator[resource.stateDisplay] = accumulator[resource.stateDisplay] || { count: 0 };\n accumulator[resource.stateDisplay].count++;\n accumulator[resource.stateDisplay].color = resource.stateSimpleColor.replace('text-', '') as StateColor;\n });\n\n return accumulator;\n});\n\nconst percent = (count: number, total: number) => {\n return count / total * 100;\n};\n\nconst count = computed(() => props.resources?.length || 0);\n\nconst segmentColors = computed(() => Object.keys(segmentAccumulator.value) as StateColor[]);\nconst segments = computed(() => segmentColors.value.map((color: StateColor) => ({\n color,\n percent: percent(segmentAccumulator.value[color]?.count || 0, count.value)\n})));\n\nconst rowStates = computed(() => {\n return Object.keys(rowAccumulator.value);\n});\n\nconst rows = computed(() => {\n return rowStates.value.map((state) => ({\n color: rowAccumulator.value[state].color,\n label: state,\n count: rowAccumulator.value[state].count,\n percent: percent(rowAccumulator.value[state].count, count.value)\n }));\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(Card, {\n title: __props.title,\n \"data-testid\": \"resource-detail-status-card\"\n }, _createSlots({\n default: _withCtx(() => [\n (rows.value.length > 0)\n ? (_openBlock(), _createBlock(StatusBar, {\n key: 0,\n segments: segments.value\n }, null, 8, [\"segments\"]))\n : _createCommentVNode(\"\", true),\n (rows.value.length > 0)\n ? (_openBlock(), _createBlock(VerticalGap, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (rows.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, i) => {\n return (_openBlock(), _createBlock(StatusRow, {\n key: i,\n color: row.color,\n label: row.label,\n count: row.count,\n percent: row.percent\n }, null, 8, [\"color\", \"label\", \"count\", \"percent\"]))\n }), 128))\n ]))\n : (props.noResourcesMessage)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(props.noResourcesMessage), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, [\n (props.showScaling)\n ? {\n name: \"heading-action\",\n fn: _withCtx(() => [\n _createVNode(Scaler, {\n ariaResourceName: _unref(i18n).t('component.resource.detail.card.podsCard.ariaResourceName'),\n value: count.value,\n min: 0,\n onIncrease: _cache[0] || (_cache[0] = (newValue) => emit('increase', newValue)),\n onDecrease: _cache[1] || (_cache[1] = (newValue) => emit('decrease', newValue))\n }, null, 8, [\"ariaResourceName\", \"value\"])\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"title\"]))\n}\n}\n\n})","\n\n\n\n\n \n \n emit('increase', newValue)\"\n @decrease=\"(newValue) => emit('decrease', newValue)\"\n />\n \n 0\"\n :segments=\"segments\"\n />\n 0\" />\n 0\"\n class=\"pod-distribution\"\n >\n \n
\n \n {{ props.noResourcesMessage }}\n
\n \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=02d3b2d9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-02d3b2d9\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"rc-status-indicator\" }\n\nimport { toRef } from 'vue';\nimport { RcStatusIndicatorProps } from './types';\nimport { useStatusColors } from '@components/utils/status';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcStatusIndicator',\n props: {\n shape: {},\n status: {}\n },\n setup(__props: any) {\n\n_useCssVars(_ctx => ({\n \"v5b89734f\": (_unref(backgroundColor)),\n \"v34875fde\": (_unref(borderColor))\n}))\n\nconst props = __props;\n\nconst status = toRef(props, 'status');\nconst { backgroundColor, borderColor } = useStatusColors(status, 'solid');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape\", {[props.shape]: true, [props.status]: true}])\n }, null, 2)\n ]))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcStatusIndicator.vue?vue&type=style&index=0&id=673187c5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-673187c5\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".scaler[data-v-085e4f82]{display:inline-flex;align-items:center;background-color:var(--accent-btn);border-radius:var(--border-radius-md);border:solid thin var(--primary);overflow:hidden}.scaler button[data-v-085e4f82]{all:initial;cursor:pointer;background:none;height:100%;width:32px;height:32px;text-align:center;font-size:20px;font-weight:700;color:var(--primary)}.scaler button i.icon[data-v-085e4f82]{font-size:.6em}.scaler button[data-v-085e4f82]:hover{background-color:var(--accent-btn)}.scaler button[disabled][data-v-085e4f82]{cursor:not-allowed;background:var(--disabled-bg);color:var(--disabled-text)}.scaler .value[data-v-085e4f82]{color:var(--body-text);cursor:default;padding:4px;padding-top:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pod-distribution[data-v-02d3b2d9]{display:flex;flex-direction:column}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".status-bar[data-v-35f1c212]{display:flex;flex-direction:row;justify-content:center;-moz-column-gap:2px;column-gap:2px;height:21px}.status-bar .segment[data-v-35f1c212]{height:4px}.status-bar .segment[data-v-35f1c212]:first-of-type{border-top-left-radius:4px;border-bottom-left-radius:4px}.status-bar .segment[data-v-35f1c212]:last-of-type{border-top-right-radius:4px;border-bottom-right-radius:4px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".status-row[data-v-377b897a]{display:flex;flex-direction:row;align-items:center}.status-row[data-v-377b897a]:not(:first-of-type){margin-top:8px}.status-row .label[data-v-377b897a]{flex-grow:1}.status-row .indicator[data-v-377b897a]{height:4px;border-radius:4px;width:20px;margin-right:10px}.status-row .percent[data-v-377b897a]{width:60px;text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-counter-badge[data-v-6a95ec9c]{box-sizing:border-box;height:21px;display:inline-flex;padding:2px 8px;align-items:center;border-radius:30px;border:1px solid var(--rc-active-border);font-family:Lato;font-size:12px;font-style:normal;font-weight:400;line-height:17px;color:var(--body-text)}.rc-counter-badge.active[data-v-6a95ec9c]{border-color:var(--rc-active-border);background:var(--rc-active-background);cursor:pointer}.rc-counter-badge.active[data-v-6a95ec9c]:hover{border-color:var(--rc-primary-hover);background:var(--rc-active-background)}.rc-counter-badge.active.disabled[data-v-6a95ec9c]{border-color:var(--rc-active-border);background:var(--rc-active-disabled-background);color:var(--rc-disabled-text-color);cursor:not-allowed}.rc-counter-badge.inactive[data-v-6a95ec9c]{background:var(--rc-inactive-background);border-color:var(--rc-inactive-border)}.rc-counter-badge.inactive.disabled[data-v-6a95ec9c]{border-color:var(--rc-inactive-disabled-border);color:var(--rc-disabled-text-color)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-status-badge[data-v-8133c8a2]{box-sizing:border-box;height:21px;display:inline-flex;align-items:center;justify-content:center;padding:2px 7px;border:1px solid transparent;border-radius:30px;font-family:Lato;font-size:12px;line-height:17px;background-color:var(--bb962a80);border-color:var(--a331affc);color:var(--v37a7a33e)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-status-indicator[data-v-673187c5]{display:inline-flex;align-items:center;justify-content:center;height:21px}.rc-status-indicator .shape[data-v-673187c5]{display:inline-block;border:1px solid transparent}.rc-status-indicator .shape.disc[data-v-673187c5]{width:8px;height:8px;border-radius:50%}.rc-status-indicator .shape.horizontal-bar[data-v-673187c5]{width:16px;height:4px;border-radius:2px}.rc-status-indicator .shape.vertical-bar[data-v-673187c5]{width:4px;height:16px;border-radius:2px}.rc-status-indicator .shape[data-v-673187c5]{background-color:var(--v5b89734f);border-color:var(--v34875fde)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./Scaler.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Scaler.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Scaler.vue?vue&type=style&index=0&id=085e4f82&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-085e4f82\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"status-bar\" }\n\nimport { stateColorCssVar, StateColor } from '@shell/utils/style';\n\nexport interface Segment {\n color: StateColor;\n percent: number;\n}\n\nexport interface Props {\n segments: Segment[]\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'StatusBar',\n props: {\n segments: {}\n },\n setup(__props: any) {\n\n\n\nconst computeStyle = (segment: Segment) => {\n return {\n backgroundColor: stateColorCssVar(segment.color),\n width: `${ segment.percent }%`\n };\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.segments, (segment, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: i,\n class: \"segment\",\n style: _normalizeStyle(computeStyle(segment))\n }, \" \", 4))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./StatusBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatusBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatusBar.vue?vue&type=style&index=0&id=35f1c212&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35f1c212\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"count\" }\n\nimport { RcCounterBadgeProps } from './types';\nimport { computed } from 'vue';\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcCounterBadge',\n props: {\n count: {},\n type: {},\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props;\nconst displayCount = computed(() => props.count < 1000 ? props.count : '999+');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"rc-counter-badge\", {[props.type]: true, disabled: props.disabled}]),\n \"data-testid\": \"rc-counter-badge\"\n }, [\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(displayCount.value), 1)\n ], 2))\n}\n}\n\n})","\n\n\n \n {{ displayCount }} \n
\n \n\n\n","import script from \"./RcCounterBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcCounterBadge.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcCounterBadge.vue?vue&type=style&index=0&id=6a95ec9c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6a95ec9c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"status-row\" }\nconst _hoisted_2 = { class: \"label\" }\nconst _hoisted_3 = { class: \"count\" }\nconst _hoisted_4 = { class: \"percent text-muted\" }\n\nimport { RcCounterBadge } from '@components/Pill';\nimport { StateColor, stateColorCssVar } from '@shell/utils/style';\n\nexport interface Props {\n color: StateColor;\n label: string;\n count: number;\n percent: number;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'StatusRow',\n props: {\n color: {},\n label: {},\n count: {},\n percent: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"indicator\",\n style: _normalizeStyle({backgroundColor: _unref(stateColorCssVar)(__props.color)})\n }, null, 4),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(__props.label), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(RcCounterBadge), {\n count: __props.count,\n type: \"inactive\"\n }, null, 8, [\"count\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(__props.percent.toFixed(1)) + \"% \", 1)\n ]))\n}\n}\n\n})","\n\n\n \n
\n
\n {{ label }}\n
\n
\n \n
\n
\n {{ percent.toFixed(1) }}%\n
\n
\n \n\n\n","import script from \"./StatusRow.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatusRow.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatusRow.vue?vue&type=style&index=0&id=377b897a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-377b897a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withCtx as _withCtx, createSlots as _createSlots } from \"vue\"\n\nconst _hoisted_1 = {\n key: 2,\n class: \"pod-distribution\"\n}\nconst _hoisted_2 = {\n key: 3,\n class: \"text-deemphasized\"\n}\n\n\nimport Card from '@shell/components/Resource/Detail/Card/index.vue';\nimport Scaler from '@shell/components/Resource/Detail/Card/Scaler.vue';\nimport VerticalGap from '@shell/components/Resource/Detail/Card/VerticalGap.vue';\nimport StatusBar from '@shell/components/Resource/Detail/StatusBar.vue';\nimport StatusRow from '@shell/components/Resource/Detail/StatusRow.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { StateColor } from '@shell/utils/style';\nimport { computed } from 'vue';\nimport { useStore } from 'vuex';\n\nexport interface Props {\n title: string;\n resources?: any[];\n showScaling?: boolean;\n noResourcesMessage?: string;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n title: {},\n resources: { default: undefined },\n showScaling: { type: Boolean, default: false },\n noResourcesMessage: { default: undefined }\n },\n emits: ['decrease', 'increase'],\n setup(__props: any, { emit: __emit }) {\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst props = __props;\nconst emit = __emit;\n\nconst segmentAccumulator = computed(() => {\n interface Value {\n count: number;\n }\n const accumulator: {[key in StateColor]?: Value} = {};\n\n props.resources?.forEach((resource: any) => {\n const color: StateColor = resource.stateSimpleColor;\n\n accumulator[color] = accumulator[color] || { count: 0 };\n accumulator[color].count++;\n });\n\n return accumulator;\n});\n\nconst rowAccumulator = computed(() => {\n interface Value {\n count: number;\n color: StateColor;\n }\n const accumulator: {[key in string]: Value} = {};\n\n props.resources?.forEach((resource: any) => {\n accumulator[resource.stateDisplay] = accumulator[resource.stateDisplay] || { count: 0 };\n accumulator[resource.stateDisplay].count++;\n accumulator[resource.stateDisplay].color = resource.stateSimpleColor.replace('text-', '') as StateColor;\n });\n\n return accumulator;\n});\n\nconst percent = (count: number, total: number) => {\n return count / total * 100;\n};\n\nconst count = computed(() => props.resources?.length || 0);\n\nconst segmentColors = computed(() => Object.keys(segmentAccumulator.value) as StateColor[]);\nconst segments = computed(() => segmentColors.value.map((color: StateColor) => ({\n color,\n percent: percent(segmentAccumulator.value[color]?.count || 0, count.value)\n})));\n\nconst rowStates = computed(() => {\n return Object.keys(rowAccumulator.value);\n});\n\nconst rows = computed(() => {\n return rowStates.value.map((state) => ({\n color: rowAccumulator.value[state].color,\n label: state,\n count: rowAccumulator.value[state].count,\n percent: percent(rowAccumulator.value[state].count, count.value)\n }));\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(Card, {\n title: __props.title,\n \"data-testid\": \"resource-detail-status-card\"\n }, _createSlots({\n default: _withCtx(() => [\n (rows.value.length > 0)\n ? (_openBlock(), _createBlock(StatusBar, {\n key: 0,\n segments: segments.value\n }, null, 8, [\"segments\"]))\n : _createCommentVNode(\"\", true),\n (rows.value.length > 0)\n ? (_openBlock(), _createBlock(VerticalGap, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (rows.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, i) => {\n return (_openBlock(), _createBlock(StatusRow, {\n key: i,\n color: row.color,\n label: row.label,\n count: row.count,\n percent: row.percent\n }, null, 8, [\"color\", \"label\", \"count\", \"percent\"]))\n }), 128))\n ]))\n : (props.noResourcesMessage)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(props.noResourcesMessage), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, [\n (props.showScaling)\n ? {\n name: \"heading-action\",\n fn: _withCtx(() => [\n _createVNode(Scaler, {\n ariaResourceName: _unref(i18n).t('component.resource.detail.card.podsCard.ariaResourceName'),\n value: count.value,\n min: 0,\n onIncrease: _cache[0] || (_cache[0] = (newValue) => emit('increase', newValue)),\n onDecrease: _cache[1] || (_cache[1] = (newValue) => emit('decrease', newValue))\n }, null, 8, [\"ariaResourceName\", \"value\"])\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"title\"]))\n}\n}\n\n})","\n\n\n\n\n \n \n emit('increase', newValue)\"\n @decrease=\"(newValue) => emit('decrease', newValue)\"\n />\n \n 0\"\n :segments=\"segments\"\n />\n 0\" />\n 0\"\n class=\"pod-distribution\"\n >\n \n
\n \n {{ props.noResourcesMessage }}\n
\n \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=02d3b2d9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-02d3b2d9\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"rc-status-indicator\" }\n\nimport { toRef } from 'vue';\nimport { RcStatusIndicatorProps } from './types';\nimport { useStatusColors } from '@components/utils/status';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcStatusIndicator',\n props: {\n shape: {},\n status: {}\n },\n setup(__props: any) {\n\n_useCssVars(_ctx => ({\n \"v5b89734f\": (_unref(backgroundColor)),\n \"v34875fde\": (_unref(borderColor))\n}))\n\nconst props = __props;\n\nconst status = toRef(props, 'status');\nconst { backgroundColor, borderColor } = useStatusColors(status, 'solid');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape\", {[props.shape]: true, [props.status]: true}])\n }, null, 2)\n ]))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcStatusIndicator.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcStatusIndicator.vue?vue&type=style&index=0&id=673187c5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-673187c5\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".scaler[data-v-085e4f82]{display:inline-flex;align-items:center;background-color:var(--accent-btn);border-radius:var(--border-radius-md);border:solid thin var(--primary);overflow:hidden}.scaler button[data-v-085e4f82]{all:initial;cursor:pointer;background:none;height:100%;width:32px;height:32px;text-align:center;font-size:20px;font-weight:700;color:var(--primary)}.scaler button i.icon[data-v-085e4f82]{font-size:.6em}.scaler button[data-v-085e4f82]:hover{background-color:var(--accent-btn)}.scaler button[disabled][data-v-085e4f82]{cursor:not-allowed;background:var(--disabled-bg);color:var(--disabled-text)}.scaler .value[data-v-085e4f82]{color:var(--body-text);cursor:default;padding:4px;padding-top:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pod-distribution[data-v-02d3b2d9]{display:flex;flex-direction:column}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".status-bar[data-v-35f1c212]{display:flex;flex-direction:row;justify-content:center;-moz-column-gap:2px;column-gap:2px;height:21px}.status-bar .segment[data-v-35f1c212]{height:4px}.status-bar .segment[data-v-35f1c212]:first-of-type{border-top-left-radius:4px;border-bottom-left-radius:4px}.status-bar .segment[data-v-35f1c212]:last-of-type{border-top-right-radius:4px;border-bottom-right-radius:4px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".status-row[data-v-377b897a]{display:flex;flex-direction:row;align-items:center}.status-row[data-v-377b897a]:not(:first-of-type){margin-top:8px}.status-row .label[data-v-377b897a]{flex-grow:1}.status-row .indicator[data-v-377b897a]{height:4px;border-radius:4px;width:20px;margin-right:10px}.status-row .percent[data-v-377b897a]{width:60px;text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-counter-badge[data-v-6a95ec9c]{box-sizing:border-box;height:21px;display:inline-flex;padding:2px 8px;align-items:center;border-radius:30px;border:1px solid var(--rc-active-border);font-family:Lato;font-size:12px;font-style:normal;font-weight:400;line-height:17px;color:var(--body-text)}.rc-counter-badge.active[data-v-6a95ec9c]{border-color:var(--rc-active-border);background:var(--rc-active-background);cursor:pointer}.rc-counter-badge.active[data-v-6a95ec9c]:hover{border-color:var(--rc-primary-hover);background:var(--rc-active-background)}.rc-counter-badge.active.disabled[data-v-6a95ec9c]{border-color:var(--rc-active-border);background:var(--rc-active-disabled-background);color:var(--rc-disabled-text-color);cursor:not-allowed}.rc-counter-badge.inactive[data-v-6a95ec9c]{background:var(--rc-inactive-background);border-color:var(--rc-inactive-border)}.rc-counter-badge.inactive.disabled[data-v-6a95ec9c]{border-color:var(--rc-inactive-disabled-border);color:var(--rc-disabled-text-color)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-status-badge[data-v-8133c8a2]{box-sizing:border-box;height:21px;display:inline-flex;align-items:center;justify-content:center;padding:2px 7px;border:1px solid transparent;border-radius:30px;font-family:Lato;font-size:12px;line-height:17px;background-color:var(--bb962a80);border-color:var(--a331affc);color:var(--v37a7a33e)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-status-indicator[data-v-673187c5]{display:inline-flex;align-items:center;justify-content:center;height:21px}.rc-status-indicator .shape[data-v-673187c5]{display:inline-block;border:1px solid transparent}.rc-status-indicator .shape.disc[data-v-673187c5]{width:8px;height:8px;border-radius:50%}.rc-status-indicator .shape.horizontal-bar[data-v-673187c5]{width:16px;height:4px;border-radius:2px}.rc-status-indicator .shape.vertical-bar[data-v-673187c5]{width:4px;height:16px;border-radius:2px}.rc-status-indicator .shape[data-v-673187c5]{background-color:var(--v5b89734f);border-color:var(--v34875fde)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./CronTooltip.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CronTooltip.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CronTooltip.vue?vue&type=style&index=0&id=646c088c&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-646c088c\"]])\n\nexport default __exports__","export interface TooltipItem {\n value?: string;\n descKey?: string;\n}\n\nexport interface TooltipSection {\n type: 'rules' | 'explanation';\n items: TooltipItem[];\n}\n\nexport type CronField = 'minute' | 'hour' | 'dayOfMonth' | 'month' | 'dayOfWeek';\n\nexport const cronFields: CronField[] = ['minute', 'hour', 'dayOfMonth', 'month', 'dayOfWeek'];\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, vShow as _vShow, createElementVNode as _createElementVNode, withDirectives as _withDirectives, mergeProps as _mergeProps } from \"vue\"\n\nconst _hoisted_1 = { class: \"cron-row\" }\nconst _hoisted_2 = [\"id\"]\n\nimport {\n reactive, computed, watch, ref, nextTick\n} from 'vue';\nimport { useStore } from 'vuex';\nimport { isValidCron } from 'cron-validator';\nimport cronstrue from 'cronstrue';\nimport { createPopper, Instance as PopperInstance } from '@popperjs/core';\nimport { useI18n } from '@shell/composables/useI18n';\nimport LabeledInput from '@components/Form/LabeledInput/LabeledInput.vue';\nimport CronTooltip from './CronTooltip.vue';\nimport type { TooltipSection, CronField } from './types';\nimport { cronFields } from './types';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CronExpressionEditor',\n props: {\n cronExpression: {}\n },\n emits: [\"update:isValid\", \"update:readableCron\", \"update:cronExpression\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\n\n// eslint-disable-next-line\nconst emit = __emit;\n\nconst store = useStore();\nconst { t } = useI18n(store);\nconst fields: CronField[] = cronFields;\n\nconst fieldLabels: Record = {\n minute: 'component.cron.expressionEditor.label.minute',\n hour: 'component.cron.expressionEditor.label.hour',\n dayOfMonth: 'component.cron.expressionEditor.label.dayOfMonth',\n month: 'component.cron.expressionEditor.label.month',\n dayOfWeek: 'component.cron.expressionEditor.label.dayOfWeek',\n};\n\nfunction makeFieldRecord(value: T): Record {\n return cronFields.reduce((acc, f) => {\n acc[f] = value;\n\n return acc;\n }, {} as Record);\n}\n\nfunction parseCronToFields(expr: string): Record {\n const parts = expr?.trim().split(' ') || [];\n const record = makeFieldRecord('');\n\n fields.forEach((f, idx) => {\n record[f] = parts[idx] || '';\n });\n\n return record;\n}\n\nconst cronValues = reactive>(parseCronToFields(props.cronExpression || '* * * * *'));\nconst errors = reactive>(makeFieldRecord(false));\nconst focusedField = reactive>(makeFieldRecord(false));\nconst rootRef = ref(null);\nconst wrapperRefs: Record = makeFieldRecord(null);\nconst tooltipRefs: Record = makeFieldRecord(null);\nconst popperInstances: Record = makeFieldRecord(null);\n\nconst tooltipData: Record = {\n minute: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.minute.any' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.minute.at1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.minute.range' },\n { value: '*/5', descKey: 'component.cron.expressionEditor.minute.every5' },\n { value: '8/5', descKey: 'component.cron.expressionEditor.minute.start8' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.minute.allowed' },\n ]\n }\n ],\n hour: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.hour.any' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.hour.at1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.hour.range' },\n { value: '*/5', descKey: 'component.cron.expressionEditor.hour.every5' },\n { value: '8/5', descKey: 'component.cron.expressionEditor.hour.start8' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.hour.allowed' },\n ]\n }\n ],\n dayOfMonth: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.dayOfMonth.any' },\n { value: '?', descKey: 'component.cron.expressionEditor.dayOfMonth.omit' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.dayOfMonth.1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.dayOfMonth.range' },\n { value: '*/5', descKey: 'component.cron.expressionEditor.dayOfMonth.every5' },\n { value: '8/5', descKey: 'component.cron.expressionEditor.dayOfMonth.start8' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.dayOfMonth.allowed' },\n ]\n }\n ],\n month: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.month.any' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.month.1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.month.range' },\n { value: '*/2', descKey: 'component.cron.expressionEditor.month.every2' },\n { value: '3/2', descKey: 'component.cron.expressionEditor.month.start3' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.month.allowed' },\n { descKey: 'component.cron.expressionEditor.month.alias' },\n ]\n }\n ],\n dayOfWeek: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.dayOfWeek.any' },\n { value: '?', descKey: 'component.cron.expressionEditor.dayOfWeek.omit' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.dayOfWeek.1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.dayOfWeek.range' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.dayOfWeek.allowed' },\n { descKey: 'component.cron.expressionEditor.dayOfWeek.alias' },\n ]\n }\n ],\n};\n\nconst validateField = (field: CronField, value: string) => {\n if (!value) {\n errors[field] = true;\n\n return;\n }\n\n const exprMap: Record = {\n minute: `${ value } * * * *`,\n hour: `* ${ value } * * *`,\n dayOfMonth: `* * ${ value } * *`,\n month: `* * * ${ value } *`,\n dayOfWeek: `* * * * ${ value }`,\n };\n\n errors[field] = !isValidCron(exprMap[field], {\n alias: true,\n allowBlankDay: true,\n allowSevenAsSunday: true,\n });\n};\n\nfields.forEach((f) => validateField(f, cronValues[f]));\n\nconst isValid = computed(() => !Object.values(errors).some(Boolean));\nconst expression = computed(() => fields.map((f) => cronValues[f]).join(' '));\nconst readableCron = computed(() => {\n if (!isValid.value) return t('component.cron.expressionEditor.invalidCronExpression');\n try {\n return cronstrue.toString(expression.value);\n } catch {\n return t('component.cron.expressionEditor.invalidCronExpression');\n }\n});\n\nwatch(cronValues, () => {\n emit('update:cronExpression', expression.value);\n emit('update:readableCron', readableCron.value);\n emit('update:isValid', isValid.value);\n}, { deep: true, immediate: true });\n\nconst handleInput = (field: CronField, val: string) => {\n cronValues[field] = val;\n validateField(field, val);\n};\n\nconst handleFocus = async(field: CronField) => {\n focusedField[field] = true;\n await nextTick();\n if (wrapperRefs[field] && tooltipRefs[field]) {\n popperInstances[field] = createPopper(wrapperRefs[field], tooltipRefs[field], {\n placement: 'bottom-start',\n modifiers: [\n { name: 'flip', options: { fallbackPlacements: ['top-start', 'bottom-end'] } },\n { name: 'preventOverflow', options: { boundary: rootRef.value || document.body, padding: 4 } },\n { name: 'offset', options: { offset: [0, 4] } },\n ],\n });\n }\n};\n\nconst handleBlur = (field: CronField) => {\n focusedField[field] = false;\n popperInstances[field]?.destroy();\n popperInstances[field] = null;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _mergeProps({\n ref_key: \"rootRef\",\n ref: rootRef,\n class: \"cron-edit\"\n }, _ctx.$attrs), [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(fields), (field) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: field,\n ref_for: true,\n ref: el => _unref(wrapperRefs)[field] = el as HTMLElement,\n class: \"input-wrapper\"\n }, [\n _createVNode(LabeledInput, {\n label: _unref(t)(fieldLabels[field]),\n value: cronValues[field],\n status: errors[field] ? 'error' : undefined,\n tooltip: errors[field] ? _unref(t)('component.cron.expressionEditor.invalidValue') : '',\n \"aria-invalid\": !!errors[field],\n \"aria-label\": _unref(t)('component.cron.expressionEditor.a11y.examples', { label: _unref(t)(fieldLabels[field]) }),\n \"aria-describedby\": `tooltip-${field}`,\n \"onUpdate:value\": val => handleInput(field, val),\n onFocus: () => handleFocus(field),\n onBlur: () => handleBlur(field)\n }, null, 8, [\"label\", \"value\", \"status\", \"tooltip\", \"aria-invalid\", \"aria-label\", \"aria-describedby\", \"onUpdate:value\", \"onFocus\", \"onBlur\"]),\n _withDirectives(_createElementVNode(\"div\", {\n id: `tooltip-${field}`,\n ref_for: true,\n ref: el => _unref(tooltipRefs)[field] = el as HTMLElement,\n role: \"tooltip\",\n class: \"cron-tooltip-wrapper\"\n }, [\n _createVNode(CronTooltip, {\n sections: tooltipData[field]\n }, null, 8, [\"sections\"])\n ], 8, _hoisted_2), [\n [_vShow, focusedField[field]]\n ])\n ]))\n }), 128))\n ])\n ], 16))\n}\n}\n\n})","\n\n\n \n
\n
wrapperRefs[field] = el as HTMLElement\"\n class=\"input-wrapper\"\n >\n
handleInput(field, val)\"\n @focus=\"() => handleFocus(field)\"\n @blur=\"() => handleBlur(field)\"\n />\n tooltipRefs[field] = el as HTMLElement\"\n role=\"tooltip\"\n class=\"cron-tooltip-wrapper\"\n >\n \n
\n \n
\n
\n \n\n\n","import script from \"./CronExpressionEditor.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CronExpressionEditor.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CronExpressionEditor.vue?vue&type=style&index=0&id=24767521&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24767521\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { id: \"cron-editor-title\" }\nconst _hoisted_2 = {\n id: \"cron-editor-desc\",\n class: \"description\"\n}\nconst _hoisted_3 = {\n class: \"readableCron\",\n \"aria-live\": \"polite\"\n}\nconst _hoisted_4 = { class: \"cron-wildcards\" }\nconst _hoisted_5 = { class: \"symbol\" }\nconst _hoisted_6 = { class: \"desc\" }\nconst _hoisted_7 = { class: \"cron-examples\" }\nconst _hoisted_8 = { class: \"symbol\" }\nconst _hoisted_9 = { class: \"desc\" }\nconst _hoisted_10 = { class: \"modal-footer\" }\nconst _hoisted_11 = [\"disabled\"]\n\nimport {\n ref, watch, onMounted, onBeforeUnmount, nextTick\n} from 'vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from '@shell/composables/useI18n';\nimport AppModal from '@shell/components/AppModal.vue';\nimport CronExpressionEditor from './CronExpressionEditor.vue';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CronExpressionEditorModal',\n props: {\n cronExpression: {},\n show: { type: Boolean }\n },\n emits: [\"update:cronExpression\", \"update:show\", \"update:readableCron\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\n\n// eslint-disable-next-line\nconst emit = __emit;\n\nconst store = useStore();\nconst { t } = useI18n(store);\n\nconst localCron = ref(props.cronExpression ?? '* * * * *');\nconst localShow = ref(props.show);\nconst readableCron = ref('');\nconst isCronValid = ref(true);\n\nconst cronInfoRef = ref(null);\nconst modalBodyRef = ref(null);\nconst modalWidth = ref('600px');\n\nconst wildcards = [\n { symbol: '*', desc: 'component.cron.expressionEditorModal.wildcards.anyValue' },\n { symbol: 'X,Y', desc: 'component.cron.expressionEditorModal.wildcards.xAndY' },\n { symbol: 'X-Y', desc: 'component.cron.expressionEditorModal.wildcards.fromXtoY' },\n { symbol: '*/X', desc: 'component.cron.expressionEditorModal.wildcards.everyX' },\n { symbol: 'Y/X', desc: 'component.cron.expressionEditorModal.wildcards.everyXStartingY' },\n { symbol: 'Y-Z/X', desc: 'component.cron.expressionEditorModal.wildcards.everyXFromYtoZ' },\n];\n\nconst examples = [\n { cron: '0 0 * * *', desc: 'component.cron.expressionEditorModal.examples.dailyMidnight' },\n { cron: '0 */5 * * *', desc: 'component.cron.expressionEditorModal.examples.every5Hours' },\n { cron: '45 17 1 * *', desc: 'component.cron.expressionEditorModal.examples.day1At1745' },\n { cron: '30 8/1 * * 1-5', desc: 'component.cron.expressionEditorModal.examples.weekdaysAt0830' },\n { cron: '0 */1 * 3,4,5 *', desc: 'component.cron.expressionEditorModal.examples.marchToMayHourly' },\n { cron: '0 9-17/4 * * *', desc: 'component.cron.expressionEditorModal.examples.every4Hours9to17' },\n];\n\nconst closeModal = () => emit('update:show', false);\nconst confirmCron = () => {\n if (!isCronValid.value) return;\n emit('update:cronExpression', localCron.value);\n emit('update:readableCron', readableCron.value);\n closeModal();\n};\n\n// dynamically update modal width based on content\nconst updateWidth = () => {\n if (!modalBodyRef.value || !cronInfoRef.value) return;\n\n const bodyStyle = getComputedStyle(modalBodyRef.value);\n const padding = parseFloat(bodyStyle.paddingLeft) + parseFloat(bodyStyle.paddingRight);\n const extraBuffer = 10;\n const contentWidth = cronInfoRef.value.scrollWidth + padding + extraBuffer;\n\n // limit width to 90% of viewport\n modalWidth.value = `${ Math.min(contentWidth, window.innerWidth * 0.9) }px`;\n};\n\nwatch(() => props.cronExpression, (val) => {\n if (val !== undefined) localCron.value = val;\n});\nwatch(() => props.show, (val) => {\n localShow.value = val;\n\n if (val) {\n // reset cron to prop when modal opens\n localCron.value = props.cronExpression ?? '* * * * *';\n nextTick(updateWidth);\n }\n});\n\nonMounted(() => {\n nextTick(updateWidth);\n window.addEventListener('resize', updateWidth);\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('resize', updateWidth);\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (localShow.value)\n ? (_openBlock(), _createBlock(AppModal, {\n key: 0,\n width: modalWidth.value,\n name: \"cron-editor-modal\",\n \"custom-class\": \"cron-editor-modal\",\n \"aria-labelledby\": \"cron-editor-title\",\n \"aria-describedby\": \"cron-editor-desc\",\n \"trigger-focus-trap\": \"\",\n onClose: closeModal\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n ref_key: \"modalBodyRef\",\n ref: modalBodyRef,\n class: \"modal-body\"\n }, [\n _createElementVNode(\"h4\", _hoisted_1, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.title')), 1),\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.description')), 1),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(readableCron.value), 1),\n _createVNode(CronExpressionEditor, {\n \"cron-expression\": localCron.value,\n \"onUpdate:cronExpression\": _cache[0] || (_cache[0] = ($event: any) => ((localCron).value = $event)),\n \"readable-cron\": readableCron.value,\n \"onUpdate:readableCron\": _cache[1] || (_cache[1] = ($event: any) => ((readableCron).value = $event)),\n \"is-valid\": isCronValid.value,\n \"onUpdate:isValid\": _cache[2] || (_cache[2] = ($event: any) => ((isCronValid).value = $event)),\n class: \"custom-cron-editor\"\n }, null, 8, [\"cron-expression\", \"readable-cron\", \"is-valid\"]),\n _createElementVNode(\"div\", {\n ref_key: \"cronInfoRef\",\n ref: cronInfoRef,\n class: \"cron-info\"\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"h5\", null, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.wildcards.title')), 1),\n _createElementVNode(\"ul\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(wildcards, (item, idx) => {\n return _createElementVNode(\"li\", { key: idx }, [\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(item.symbol), 1),\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(t)(item.desc)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"h5\", null, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.examples.title')), 1),\n _createElementVNode(\"ul\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(examples, (ex, idx) => {\n return _createElementVNode(\"li\", { key: idx }, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(ex.cron), 1),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(t)(ex.desc)), 1)\n ])\n }), 64))\n ])\n ])\n ], 512)\n ], 512),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"button\", {\n class: \"btn btn-sm role-secondary\",\n onClick: closeModal\n }, _toDisplayString(_unref(t)('generic.cancel')), 1),\n _createElementVNode(\"button\", {\n class: \"btn btn-sm role-primary ml-10\",\n disabled: !isCronValid.value,\n onClick: confirmCron\n }, _toDisplayString(_unref(t)('generic.confirm')), 9, _hoisted_11)\n ])\n ]),\n _: 1\n }, 8, [\"width\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n \n \n
\n {{ t('component.cron.expressionEditorModal.title') }}\n \n
\n {{ t('component.cron.expressionEditorModal.description') }}\n
\n\n
\n {{ readableCron }}\n
\n\n
\n\n
\n
\n
{{ t('component.cron.expressionEditorModal.wildcards.title') }} \n
\n \n {{ item.symbol }} \n {{ t(item.desc) }} \n \n \n
\n\n
\n
{{ t('component.cron.expressionEditorModal.examples.title') }} \n
\n \n {{ ex.cron }} \n {{ t(ex.desc) }} \n \n \n
\n
\n
\n\n \n \n \n\n\n","import script from \"./CronExpressionEditorModal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CronExpressionEditorModal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CronExpressionEditorModal.vue?vue&type=style&index=0&id=46c1ea1f&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-46c1ea1f\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ prefix }}\n \n \n \n \n {{ middle }}\n \n \n \n \n {{ suffix }}\n \n
\n \n","import { render } from \"./MessageLink.vue?vue&type=template&id=e05ba5fa\"\nimport script from \"./MessageLink.vue?vue&type=script&lang=js\"\nexport * from \"./MessageLink.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n {{ get(r, sideLabelField) }} \n
\n\n \n \n \n
\n \n {{ get(r, nameField) }}\n \n \n {{ get(r, descriptionField) }}\n
\n \n
\n \n
\n \n \n\n\n","import { render } from \"./SelectIconGrid.vue?vue&type=template&id=13c2dac6&scoped=true\"\nimport script from \"./SelectIconGrid.vue?vue&type=script&lang=js\"\nexport * from \"./SelectIconGrid.vue?vue&type=script&lang=js\"\n\nimport \"./SelectIconGrid.vue?vue&type=style&index=0&id=13c2dac6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-13c2dac6\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ text }} \n \n
\n \n\n\n","import { render } from \"./Tip.vue?vue&type=template&id=491e4180&scoped=true\"\nimport script from \"./Tip.vue?vue&type=script&lang=js\"\nexport * from \"./Tip.vue?vue&type=script&lang=js\"\n\nimport \"./Tip.vue?vue&type=style&index=0&id=491e4180&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-491e4180\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render } from \"./ArrayListSelect.vue?vue&type=template&id=313aeca6&scoped=true\"\nimport script from \"./ArrayListSelect.vue?vue&type=script&lang=js\"\nexport * from \"./ArrayListSelect.vue?vue&type=script&lang=js\"\n\nimport \"./ArrayListSelect.vue?vue&type=style&index=0&id=313aeca6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-313aeca6\"]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n","\n\n \n \n \n \n
\n
\n {{ t('membershipEditor.user') }} \n
\n
\n {{ t('membershipEditor.role') }} \n
\n
\n
\n \n \n \n
\n
\n {{ row.value.roleDisplay }}\n
\n
\n \n \n \n {{ t('generic.add') }}\n \n \n \n \n \n {{ t('generic.remove') }}\n \n \n \n \n\n\n","\n\n\n \n
\n \n
\n
\n \n\n
\n \n
\n
\n \n
\n \n {{ t('principal.name') }}: {{ principal.name || principal.loginName }} \n {{ t('principal.loginName') }}: {{ principal.loginName }} \n {{ t('principal.type') }}: {{ principal.displayType }} \n \n
\n
\n \n \n \n {{ principal.name }}\n ({{ principal.loginName }}) \n \n \n {{ principal.name }}\n \n \n {{ principal.loginName }}\n \n
\n \n {{ principal.displayType }}\n
\n \n \n\n
\n \n
\n \n {{ value }}\n
\n \n
\n \n\n\n","import { render } from \"./Principal.vue?vue&type=template&id=2e3be36f&scoped=true\"\nimport script from \"./Principal.vue?vue&type=script&lang=js\"\nexport * from \"./Principal.vue?vue&type=script&lang=js\"\n\nimport \"./Principal.vue?vue&type=style&index=0&id=2e3be36f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2e3be36f\"]])\n\nexport default __exports__","import { render } from \"./MembershipEditor.vue?vue&type=template&id=c4be6d5a&scoped=true\"\nimport script from \"./MembershipEditor.vue?vue&type=script&lang=js\"\nexport * from \"./MembershipEditor.vue?vue&type=script&lang=js\"\n\nimport \"./MembershipEditor.vue?vue&type=style&index=0&id=c4be6d5a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c4be6d5a\"]])\n\nexport default __exports__","import { render } from \"./ProjectMembershipEditor.vue?vue&type=template&id=0a642b08\"\nimport script from \"./ProjectMembershipEditor.vue?vue&type=script&lang=js\"\nexport * from \"./ProjectMembershipEditor.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n \n
\n
\n \n
\n\n
\n \n
\n\n
\n
0 ? 'span-3' : 'span-6']\"\n >\n \n
\n\n
\n \n
\n
\n
\n \n\n\n","export function normalizeName(str) {\n return (str || '')\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n}\n","import { render } from \"./NameNsDescription.vue?vue&type=template&id=44498374&scoped=true\"\nimport script from \"./NameNsDescription.vue?vue&type=script&lang=js\"\nexport * from \"./NameNsDescription.vue?vue&type=script&lang=js\"\n\nimport \"./NameNsDescription.vue?vue&type=style&index=0&id=44498374&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44498374\"]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n role: \"row\",\n class: \"row mb-10\"\n}\n\nimport { computed } from 'vue';\nimport { useStore } from 'vuex';\n\nimport Select from '@shell/components/form/Select';\nimport UnitInput from '@shell/components/form/UnitInput';\nimport { LabeledInput } from '@components/Form/LabeledInput';\nimport { RcButton } from '@components/RcButton';\n\nimport { TYPES } from './shared';\nimport { useI18n } from '@shell/composables/useI18n';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ResourceQuotaEntry',\n props: /*@__PURE__*/_mergeModels({\n id: {},\n index: {},\n mode: {},\n types: {}\n }, {\n \"resourceType\": {},\n \"resourceTypeModifiers\": {},\n \"resourceIdentifier\": {},\n \"resourceIdentifierModifiers\": {},\n \"projectLimit\": {},\n \"projectLimitModifiers\": {},\n \"namespaceDefaultLimit\": {},\n \"namespaceDefaultLimitModifiers\": {},\n }),\n emits: /*@__PURE__*/_mergeModels(['remove'], [\"update:resourceType\", \"update:resourceIdentifier\", \"update:projectLimit\", \"update:namespaceDefaultLimit\"]),\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\n\nconst emit = __emit;\n\nconst store = useStore();\nconst { t } = useI18n(store);\n\nconst resourceType = _useModel(__props, 'resourceType');\nconst resourceIdentifier = _useModel(__props, 'resourceIdentifier');\nconst projectLimit = _useModel(__props, 'projectLimit');\nconst namespaceDefaultLimit = _useModel(__props, 'namespaceDefaultLimit');\n\nconst typeOption = computed(() => {\n return props.types.find((type) => type.value === resourceType.value) || {};\n});\n\nconst isCustom = computed(() => {\n return resourceType.value === TYPES.EXTENDED;\n});\n\nconst removeAriaLabel = computed(() => {\n let identifier;\n\n if (isCustom.value) {\n identifier = resourceIdentifier.value || t('generic.ariaLabel.genericRow', { index: String(props.index) });\n } else {\n identifier = typeOption.value?.label || t('generic.ariaLabel.genericRow', { index: String(props.index) });\n }\n\n return t('resourceQuota.ariaLabel.remove', { identifier });\n});\n\nconst customTypeRules = computed(() => {\n // Return a validation rule that makes the field required when isCustom is true\n if (isCustom.value) {\n return [\n (value: string) => {\n if (!value) {\n return t('resourceQuota.errors.customTypeRequired');\n }\n\n return undefined;\n }\n ];\n }\n\n return [];\n});\n\nconst remove = (id: string) => {\n emit('remove', id);\n};\n\nconst updateResourceIdentifier = (resourceType: string) => {\n if (resourceType === TYPES.EXTENDED) {\n return;\n }\n\n resourceIdentifier.value = resourceType;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(Select), {\n value: resourceType.value,\n \"onUpdate:value\": [\n _cache[0] || (_cache[0] = ($event: any) => ((resourceType).value = $event)),\n updateResourceIdentifier\n ],\n class: \"mr-10\",\n mode: __props.mode,\n options: __props.types,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.resourceType', { row: __props.index }),\n \"data-testid\": \"projectrow-type-input\"\n }, null, 8, [\"value\", \"mode\", \"options\", \"aria-label\"]),\n _createVNode(_unref(LabeledInput), {\n value: resourceIdentifier.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((resourceIdentifier).value = $event)),\n disabled: !isCustom.value,\n required: isCustom.value,\n mode: __props.mode,\n placeholder: _unref(t)('resourceQuota.resourceIdentifier.placeholder'),\n rules: customTypeRules.value,\n \"require-dirty\": false,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.resourceIdentifier', { row: __props.index }),\n class: \"mr-10\",\n \"data-testid\": \"projectrow-custom-type-input\"\n }, null, 8, [\"value\", \"disabled\", \"required\", \"mode\", \"placeholder\", \"rules\", \"aria-label\"]),\n _createVNode(_unref(UnitInput), {\n value: projectLimit.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((projectLimit).value = $event)),\n class: \"mr-10\",\n mode: __props.mode,\n placeholder: typeOption.value.placeholder,\n increment: typeOption.value.increment,\n \"input-exponent\": typeOption.value.inputExponent,\n \"base-unit\": typeOption.value.baseUnit,\n \"output-modifier\": true,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.projectLimit', { row: __props.index }),\n \"data-testid\": \"projectrow-project-quota-input\"\n }, null, 8, [\"value\", \"mode\", \"placeholder\", \"increment\", \"input-exponent\", \"base-unit\", \"aria-label\"]),\n _createVNode(_unref(UnitInput), {\n value: namespaceDefaultLimit.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((namespaceDefaultLimit).value = $event)),\n mode: __props.mode,\n placeholder: typeOption.value.placeholder,\n increment: typeOption.value.increment,\n \"input-exponent\": typeOption.value.inputExponent,\n \"base-unit\": typeOption.value.baseUnit,\n \"output-modifier\": true,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.namespaceDefaultLimit', { row: __props.index }),\n \"data-testid\": \"projectrow-namespace-quota-input\"\n }, null, 8, [\"value\", \"mode\", \"placeholder\", \"increment\", \"input-exponent\", \"base-unit\", \"aria-label\"]),\n _createVNode(_unref(RcButton), {\n variant: \"tertiary\",\n \"aria-label\": removeAriaLabel.value,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (remove(__props.id)))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(t)('generic.remove')), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ]))\n}\n}\n\n})","\n\n\n \n \n \n \n \n \n {{ t('generic.remove') }}\n \n
\n \n\n\n","import script from \"./ResourceQuotaEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ResourceQuotaEntry.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ResourceQuotaEntry.vue?vue&type=style&index=0&id=51c5ac53&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-51c5ac53\"]])\n\nexport default __exports__","import { render } from \"./Project.vue?vue&type=template&id=23e928ea&scoped=true\"\nimport script from \"./Project.vue?vue&type=script&lang=js\"\nexport * from \"./Project.vue?vue&type=script&lang=js\"\n\nimport \"./Project.vue?vue&type=style&index=0&id=23e928ea&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-23e928ea\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./SecretSelector.vue?vue&type=template&id=01b02e6e\"\nimport script from \"./SecretSelector.vue?vue&type=script&lang=js\"\nexport * from \"./SecretSelector.vue?vue&type=script&lang=js\"\n\nimport \"./SecretSelector.vue?vue&type=style&index=0&id=01b02e6e&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n errors = e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n\n \n \n \n \n \n
\n \n \n removeMatch(props.row.i)\"\n @update:value=\"e=>updateMatch(e,props.row.i)\"\n />\n \n \n \n {{ t('logging.flow.matches.addSelect') }}\n \n \n {{ t('logging.flow.matches.addExclude') }}\n \n \n \n \n\n \n \n opt.value\"\n >\n \n \n {{ option.label }}\n \n \n opt.value\"\n >\n \n \n {{ option.label }}\n \n \n \n\n \n \n \n \n \n \n \n\n\n","\n\n\n \n
\n \n
\n \n\n
\n {{ value.select ? t('logging.flow.matches.nodes.title.include') : t('logging.flow.matches.nodes.title.exclude') }}\n \n
\n
\n e.value\"\n />\n
\n
\n
\n
\n
\n {{ value.select ? t('logging.flow.matches.containerNames.title.include') : t('logging.flow.matches.containerNames.title.exclude') }}\n \n
\n
\n
\n
\n {{ value.select ? t('logging.flow.matches.namespaces.title.include') : t('logging.flow.matches.namespaces.title.exclude') }}\n \n
\n
\n
\n
\n \n","import { render } from \"./Match.vue?vue&type=template&id=1d33f8e3\"\nimport script from \"./Match.vue?vue&type=script&lang=js\"\nexport * from \"./Match.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=881d7730&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=881d7730&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-881d7730\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./awsElasticsearch.vue?vue&type=template&id=018c1a22\"\nimport script from \"./awsElasticsearch.vue?vue&type=script&lang=js\"\nexport * from \"./awsElasticsearch.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./azurestorage.vue?vue&type=template&id=a9cf09b6\"\nimport script from \"./azurestorage.vue?vue&type=script&lang=js\"\nexport * from \"./azurestorage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.configuration') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./cloudwatch.vue?vue&type=template&id=ef98655a\"\nimport script from \"./cloudwatch.vue?vue&type=script&lang=js\"\nexport * from \"./cloudwatch.vue?vue&type=script&lang=js\"\n\nimport \"./cloudwatch.vue?vue&type=style&index=0&id=ef98655a&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.certificate') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./datadog.vue?vue&type=template&id=16a984dc\"\nimport script from \"./datadog.vue?vue&type=script&lang=js\"\nexport * from \"./datadog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n\n","import { render } from \"./elasticsearch.vue?vue&type=template&id=23b190dc\"\nimport script from \"./elasticsearch.vue?vue&type=script&lang=js\"\nexport * from \"./elasticsearch.vue?vue&type=script&lang=js\"\n\nimport \"./elasticsearch.vue?vue&type=style&index=0&id=23b190dc&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./file.vue?vue&type=template&id=53ae325a\"\nimport script from \"./file.vue?vue&type=script&lang=js\"\nexport * from \"./file.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n \n","import { render } from \"./forward.vue?vue&type=template&id=6c319b78\"\nimport script from \"./forward.vue?vue&type=script&lang=js\"\nexport * from \"./forward.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./gcs.vue?vue&type=template&id=6d929cee&scoped=true\"\nimport script from \"./gcs.vue?vue&type=script&lang=js\"\nexport * from \"./gcs.vue?vue&type=script&lang=js\"\n\nimport \"./gcs.vue?vue&type=style&index=0&id=6d929cee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6d929cee\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./gelf.vue?vue&type=template&id=04900f7a\"\nimport script from \"./gelf.vue?vue&type=script&lang=js\"\nexport * from \"./gelf.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./kafka.vue?vue&type=template&id=4ba0638c\"\nimport script from \"./kafka.vue?vue&type=script&lang=js\"\nexport * from \"./kafka.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./kinesisStream.vue?vue&type=template&id=08109557\"\nimport script from \"./kinesisStream.vue?vue&type=script&lang=js\"\nexport * from \"./kinesisStream.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./logdna.vue?vue&type=template&id=40aa7568\"\nimport script from \"./logdna.vue?vue&type=script&lang=js\"\nexport * from \"./logdna.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.certificate') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./logz.vue?vue&type=template&id=51e93f05\"\nimport script from \"./logz.vue?vue&type=script&lang=js\"\nexport * from \"./logz.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.labels') }} \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./loki.vue?vue&type=template&id=e7caaa0e\"\nimport script from \"./loki.vue?vue&type=script&lang=js\"\nexport * from \"./loki.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./newrelic.vue?vue&type=template&id=066e83f8\"\nimport script from \"./newrelic.vue?vue&type=script&lang=js\"\nexport * from \"./newrelic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n\n","import { render } from \"./opensearch.vue?vue&type=template&id=0d09c670\"\nimport script from \"./opensearch.vue?vue&type=script&lang=js\"\nexport * from \"./opensearch.vue?vue&type=script&lang=js\"\n\nimport \"./opensearch.vue?vue&type=style&index=0&id=0d09c670&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.redis.format.title') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n \n\n","import { render } from \"./redis.vue?vue&type=template&id=1b04d6cd\"\nimport script from \"./redis.vue?vue&type=script&lang=js\"\nexport * from \"./redis.vue?vue&type=script&lang=js\"\n\nimport \"./redis.vue?vue&type=style&index=0&id=1b04d6cd&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./s3.vue?vue&type=template&id=3422a3ee&scoped=true\"\nimport script from \"./s3.vue?vue&type=script&lang=js\"\nexport * from \"./s3.vue?vue&type=script&lang=js\"\n\nimport \"./s3.vue?vue&type=style&index=0&id=3422a3ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3422a3ee\"]])\n\nexport default __exports__","\n\n\n \n
\n
{{ t('logging.output.sections.target') }} \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n
\n
\n
\n
\n \n","import { render } from \"./splunkHec.vue?vue&type=template&id=92bc30c4\"\nimport script from \"./splunkHec.vue?vue&type=script&lang=js\"\nexport * from \"./splunkHec.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./sumologic.vue?vue&type=template&id=773e8684\"\nimport script from \"./sumologic.vue?vue&type=script&lang=js\"\nexport * from \"./sumologic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.certificate') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.syslog.format.title') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.syslog.buffer.title') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import { render } from \"./syslog.vue?vue&type=template&id=fc78e272&scoped=true\"\nimport script from \"./syslog.vue?vue&type=script&lang=js\"\nexport * from \"./syslog.vue?vue&type=script&lang=js\"\n\nimport \"./syslog.vue?vue&type=style&index=0&id=fc78e272&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fc78e272\"]])\n\nexport default __exports__","\n\n \n
\n Receiver\n \n \n
\n
\n
Grouping \n
\n
\n
\n {{ t(\"monitoringRoute.groups.addGroupByLabel'\") }}\n \n \n
\n
\n
\n
Waiting and Intervals \n
\n
\n\n
Matchers \n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n \n","import { render } from \"./routeConfig.vue?vue&type=template&id=b4519b74\"\nimport script from \"./routeConfig.vue?vue&type=script&lang=js\"\nexport * from \"./routeConfig.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n (errors = e)\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n\n \n
\n
\n \n \n {{ t('networkpolicy.ingress.label') }}\n \n \n \n \n \n \n {{ t('networkpolicy.egress.label') }}\n \n \n \n \n \n \n {{ t('networkpolicy.selectors.label') }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n","\n\n\n \n \n","\n\n\n \n
\n
\n
\n {{ t(`networkpolicy.${type}.ruleLabel`) }}\n \n \n
\n \n \n \n \n
\n
\n
\n
\n
\n {{ t('networkpolicy.rules.ports.label') }}\n \n \n
\n \n \n \n \n
\n
\n
\n \n","\n\n\n \n \n","import { render } from \"./PolicyRulePort.vue?vue&type=template&id=7ade56b7\"\nimport script from \"./PolicyRulePort.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRulePort.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n
\n
\n \n {{ invalidCidrs.join(', ') }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n {{ t('networkpolicy.rules.namespace') }}\n \n
\n
\n \n
\n
\n
\n
\n \n {{ t('networkpolicy.rules.pod') }}\n \n
\n
\n \n
\n
\n
\n
\n \n\n\n","import { render } from \"./PolicyRuleTarget.vue?vue&type=template&id=1d89486c&scoped=true\"\nimport script from \"./PolicyRuleTarget.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRuleTarget.vue?vue&type=script&lang=js\"\n\nimport \"./PolicyRuleTarget.vue?vue&type=style&index=0&id=1d89486c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1d89486c\"]])\n\nexport default __exports__","import { render } from \"./PolicyRule.vue?vue&type=template&id=951fef2e\"\nimport script from \"./PolicyRule.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRule.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./PolicyRules.vue?vue&type=template&id=6ac390bc\"\nimport script from \"./PolicyRules.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRules.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=4e277037\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./basic.vue?vue&type=template&id=704da634\"\nimport script from \"./basic.vue?vue&type=script&lang=js\"\nexport * from \"./basic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./generic.vue?vue&type=template&id=19664d1e\"\nimport script from \"./generic.vue?vue&type=script&lang=js\"\nexport * from \"./generic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=0e953ab4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./registry.vue?vue&type=template&id=8318b820\"\nimport script from \"./registry.vue?vue&type=script&lang=js\"\nexport * from \"./registry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n","import { render } from \"./ssh.vue?vue&type=template&id=72b950f0\"\nimport script from \"./ssh.vue?vue&type=script&lang=js\"\nexport * from \"./ssh.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n","import { render } from \"./tls.vue?vue&type=template&id=f6832e80\"\nimport script from \"./tls.vue?vue&type=script&lang=js\"\nexport * from \"./tls.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"h3{margin-top:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row{margin-bottom:5px}.vertically-center{padding:20px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row{margin-bottom:5px}.vertically-center{padding:20px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row{margin-bottom:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cron-row[data-v-24767521]{display:flex;justify-content:center;flex-wrap:wrap;gap:8px}.input-wrapper[data-v-24767521]{max-width:120px;flex:1 1 auto}.input-wrapper .label[data-v-24767521]{color:var(--label-secondary);font-size:12px}.cron-tooltip-wrapper[data-v-24767521]{padding:16px;background:var(--body-bg);border:1px solid var(--border);border-radius:var(--border-radius-lg);box-shadow:0 2px 8px var(--shadow);display:inline-block;z-index:2}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#modals .cron-editor-modal{border-radius:var(--border-radius-lg)}.modal-body[data-v-46c1ea1f]{padding:20px 20px 8px}.modal-body .description[data-v-46c1ea1f]{margin:16px 0}.modal-body .readableCron[data-v-46c1ea1f]{padding:16px;background-color:var(--disabled-banner-bg)}.modal-body .custom-cron-editor[data-v-46c1ea1f]{margin:64px auto;max-width:660px}.modal-body .cron-info[data-v-46c1ea1f]{display:flex;gap:52px;flex-wrap:nowrap;overflow-x:auto}.modal-body .cron-info ul[data-v-46c1ea1f]{list-style:none;padding:0;margin:16px 0;display:grid;grid-template-columns:max-content 1fr;gap:8px 10px}.modal-body .cron-info ul li[data-v-46c1ea1f]{display:contents;white-space:nowrap;color:var(--input-label);font-size:12px}.modal-body .cron-info ul .symbol[data-v-46c1ea1f]{color:var(--body-text)}.modal-footer[data-v-46c1ea1f]{border-top:1px solid var(--border);display:flex;padding:10px 20px;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cron-tooltip-content-wrapper[data-v-646c088c]{display:flex;flex-direction:column}.cron-tooltip-content-wrapper .cron-tooltip-section[data-v-646c088c]{list-style:none;padding:0;margin:0}.cron-tooltip-content-wrapper .cron-tooltip-section.cron-tooltip-rules[data-v-646c088c]{display:grid;grid-template-columns:max-content 1fr;gap:12px}.cron-tooltip-content-wrapper .cron-tooltip-section.cron-tooltip-rules li[data-v-646c088c]{display:contents;align-items:center}.cron-tooltip-content-wrapper .cron-tooltip-section.cron-tooltip-explanation[data-v-646c088c]{margin-top:20px;display:grid;gap:8px}.cron-tooltip-content-wrapper .cron-tooltip-section li[data-v-646c088c]{white-space:nowrap}.cron-tooltip-content-wrapper .cron-tooltip-section li .symbol[data-v-646c088c]{color:var(--body-text)}.cron-tooltip-content-wrapper .cron-tooltip-section li .desc[data-v-646c088c]{color:var(--input-label)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".grid[data-v-13c2dac6]{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:0 -10px}@media only screen and (min-width:480px){.grid .item[data-v-13c2dac6]{width:100%}}@media only screen and (min-width:768px){.grid .item[data-v-13c2dac6]{width:calc(50% - 20px)}}@media only screen and (min-width:992px){.grid .item[data-v-13c2dac6]{width:calc(33.33333% - 20px)}}@media only screen and (min-width:1281px){.grid .item[data-v-13c2dac6]{width:calc(25% - 20px)}}.grid .item[data-v-13c2dac6]{height:135px;margin:10px;padding:10px;position:relative;border:1px solid var(--border);text-decoration:none!important;color:var(--body-text)!important}.grid .item[data-v-13c2dac6]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.grid .item[data-v-13c2dac6]:hover:not(.disabled){box-shadow:0 0 30px var(--shadow);transition:box-shadow .1s ease-in-out;cursor:pointer;text-decoration:none!important}.grid .item .side-label[data-v-13c2dac6]{position:absolute;top:10px;right:10px;padding:2px 5px}.grid .item .side-label.indicator[data-v-13c2dac6]{top:0;right:0;left:0}.grid .item .side-label label[data-v-13c2dac6],.grid .item label.deploys-os-label[data-v-13c2dac6],.grid .item label.os-incompatible-label[data-v-13c2dac6]{font-size:12px;line-height:12px;text-align:center;display:block;white-space:no-wrap;text-overflow:ellipsis;color:var(--card-badge-text);margin:0}.grid .item .deploys-os-label[data-v-13c2dac6],.grid .item .os-incompatible-label[data-v-13c2dac6]{position:absolute;bottom:10px;padding:2px 5px;right:10px}.grid .item label.os-incompatible-label[data-v-13c2dac6]{color:var(--warning);background-color:var(--warning-banner-bg)}.grid .item .logo[data-v-13c2dac6]{text-align:center;position:absolute;left:25px;top:37.5px;width:60px;height:60px;border-radius:calc(var(--border-radius)*2);overflow:hidden;background-color:#fff}.grid .item .logo img[data-v-13c2dac6]{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}.grid .item .logo i[data-v-13c2dac6]{background-position:50%;background-repeat:no-repeat;display:flex;height:56px;margin:2px;width:56px}.grid .item.rancher .deploys-os-label[data-v-13c2dac6],.grid .item.rancher .side-label[data-v-13c2dac6]{background-color:var(--app-rancher-accent)}.grid .item.rancher .deploys-os-label label[data-v-13c2dac6],.grid .item.rancher .side-label label[data-v-13c2dac6]{color:var(--app-rancher-accent-text)}.grid .item.rancher[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-rancher-accent)}.grid .item.partner .deploys-os-label[data-v-13c2dac6],.grid .item.partner .side-label[data-v-13c2dac6]{background-color:var(--app-partner-accent)}.grid .item.partner .deploys-os-label label[data-v-13c2dac6],.grid .item.partner .side-label label[data-v-13c2dac6]{color:var(--app-partner-accent-text)}.grid .item.partner[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-partner-accent)}.grid .item.color1 .deploys-os-label[data-v-13c2dac6],.grid .item.color1 .side-label[data-v-13c2dac6]{background-color:var(--app-color1-accent)}.grid .item.color1 .deploys-os-label label[data-v-13c2dac6],.grid .item.color1 .side-label label[data-v-13c2dac6]{color:var(--app-color1-accent-text)}.grid .item.color1[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color1-accent)}.grid .item.color2 .deploys-os-label[data-v-13c2dac6],.grid .item.color2 .side-label[data-v-13c2dac6]{background-color:var(--app-color2-accent)}.grid .item.color2 .deploys-os-label label[data-v-13c2dac6],.grid .item.color2 .side-label label[data-v-13c2dac6]{color:var(--app-color2-accent-text)}.grid .item.color2[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color2-accent)}.grid .item.color3 .deploys-os-label[data-v-13c2dac6],.grid .item.color3 .side-label[data-v-13c2dac6]{background-color:var(--app-color3-accent)}.grid .item.color3 .deploys-os-label label[data-v-13c2dac6],.grid .item.color3 .side-label label[data-v-13c2dac6]{color:var(--app-color3-accent-text)}.grid .item.color3[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color3-accent)}.grid .item.color4 .deploys-os-label[data-v-13c2dac6],.grid .item.color4 .side-label[data-v-13c2dac6]{background-color:var(--app-color4-accent)}.grid .item.color4 .deploys-os-label label[data-v-13c2dac6],.grid .item.color4 .side-label label[data-v-13c2dac6]{color:var(--app-color4-accent-text)}.grid .item.color4[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color4-accent)}.grid .item.color5 .deploys-os-label[data-v-13c2dac6],.grid .item.color5 .side-label[data-v-13c2dac6]{background-color:var(--app-color5-accent)}.grid .item.color5 .deploys-os-label label[data-v-13c2dac6],.grid .item.color5 .side-label label[data-v-13c2dac6]{color:var(--app-color5-accent-text)}.grid .item.color5[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color5-accent)}.grid .item.color6 .deploys-os-label[data-v-13c2dac6],.grid .item.color6 .side-label[data-v-13c2dac6]{background-color:var(--app-color6-accent)}.grid .item.color6 .deploys-os-label label[data-v-13c2dac6],.grid .item.color6 .side-label label[data-v-13c2dac6]{color:var(--app-color6-accent-text)}.grid .item.color6[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color6-accent)}.grid .item.color7 .deploys-os-label[data-v-13c2dac6],.grid .item.color7 .side-label[data-v-13c2dac6]{background-color:var(--app-color7-accent)}.grid .item.color7 .deploys-os-label label[data-v-13c2dac6],.grid .item.color7 .side-label label[data-v-13c2dac6]{color:var(--app-color7-accent-text)}.grid .item.color7[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color7-accent)}.grid .item.color8 .deploys-os-label[data-v-13c2dac6],.grid .item.color8 .side-label[data-v-13c2dac6]{background-color:var(--app-color8-accent)}.grid .item.color8 .deploys-os-label label[data-v-13c2dac6],.grid .item.color8 .side-label label[data-v-13c2dac6]{color:var(--app-color8-accent-text)}.grid .item.color8[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color8-accent)}.grid .item[data-v-13c2dac6]:hover:not(.disabled){background-position:100%;border-left-width:1px}.grid .item:hover:not(.disabled) .logo[data-v-13c2dac6]{left:25px}.grid .item:hover:not(.disabled) .name[data-v-13c2dac6]{margin-left:85px}.grid .item .name[data-v-13c2dac6]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:115px;margin:0;margin-left:85px}.grid .item.has-description .name[data-v-13c2dac6]{margin-top:10px;line-height:normal}.grid .item.has-description.has-side-label .name[data-v-13c2dac6]{margin-top:15px}.grid .item .description[data-v-13c2dac6]{margin-top:10px;margin-left:85px;margin-right:10px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;text-overflow:ellipsis;color:var(--text-muted)!important}.grid .disabled[data-v-13c2dac6]{opacity:.5;cursor:not-allowed}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tip[data-v-491e4180]{color:var(--disabled-text);display:flex;align-items:center}.my-icon[data-v-491e4180]{font-size:16px;margin-right:2px}.text[data-v-491e4180]{font-size:14px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".principal[data-v-2e3be36f]{display:grid;grid-template-areas:\\\"avatar name\\\" \\\"avatar description\\\";grid-template-columns:40px auto;grid-template-rows:auto 20px;-moz-column-gap:10px;column-gap:10px}.principal th[data-v-2e3be36f]{text-align:left;font-weight:400;padding-right:10px}.principal.showLabels[data-v-2e3be36f]{grid-template-areas:\\\"avatar name\\\";grid-template-columns:60px auto;grid-template-rows:60px;-moz-column-gap:0;column-gap:0}.principal.showLabels .name[data-v-2e3be36f]{line-height:unset}.principal.showLabels table tr td[data-v-2e3be36f]:not(:first-of-type){padding-left:10px}.principal .avatar[data-v-2e3be36f]{grid-area:avatar;text-align:center}.principal .avatar DIV.empty[data-v-2e3be36f]{border:1px solid var(--border);line-height:40px}.principal .avatar IMG[data-v-2e3be36f]{width:40px;height:40px}.principal .avatar DIV.round[data-v-2e3be36f],.principal .avatar IMG.round[data-v-2e3be36f]{border-radius:50%}.principal .name[data-v-2e3be36f]{grid-area:name;line-height:20px;overflow-wrap:anywhere}.principal .description[data-v-2e3be36f]{grid-area:description;line-height:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-313aeca6] .unlabeled-select{height:61px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".role[data-v-c4be6d5a]{display:flex;align-items:center;flex-direction:row}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button[data-v-44498374]{all:unset;height:0;position:relative;top:-35px;float:right;margin-right:7px;cursor:pointer}button .align-value[data-v-44498374]{padding-top:7px}.row.name-ns-description[data-v-44498374]{max-height:61px}.row .namespace-select[data-v-44498374] .labeled-select{min-width:40%}.row .namespace-select[data-v-44498374] .labeled-select .v-select.inline.vs--single{padding-bottom:2px}.row.flip-direction[data-v-44498374]{flex-direction:column}.row.flip-direction.name-ns-description[data-v-44498374]{max-height:none}.row.flip-direction>div[data-v-44498374]>*{margin-bottom:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headers[data-v-23e928ea]{display:flex;flex-direction:row;justify-content:space-evenly;align-items:center;border-bottom:1px solid var(--border);height:30px;width:calc(100% - 75px)}.headers div[data-v-23e928ea]{width:100%}.required[data-v-23e928ea]{color:var(--error)}.project-quotas-footer[data-v-23e928ea]{margin-top:24px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row[data-v-51c5ac53]{display:flex;flex-direction:row;justify-content:space-evenly}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".secret-selector{width:100%}.secret-selector label{display:block}.secret-selector .labeled-select{min-height:61px}.secret-selector .vs__selected-options{padding:8px 0 7px 0}.secret-selector label{display:inline-block}.secret-selector.show-key-selector .input-container>*{display:inline-block;width:50%}.secret-selector.show-key-selector .input-container>.labeled-select.focused{z-index:10}.secret-selector.show-key-selector .input-container>:first-child{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}.secret-selector.show-key-selector .input-container>:last-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none;float:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-881d7730] .icon-info{margin-top:-3px;margin-right:4px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overwrite[data-v-6d929cee]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overwrite[data-v-3422a3ee]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".insecure[data-v-fc78e272]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".namespace-pod-rule[data-v-1d89486c]{display:table;width:100px;padding:0,10px,0,0;text-align:center}.namespace-pod-rule .label[data-v-1d89486c]{display:table-cell;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseUnset = require('./_baseUnset'),\n isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n\n // Prevent prototype pollution:\n // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n var index = -1,\n length = path.length;\n\n if (!length) {\n return true;\n }\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n // Always block \"__proto__\" anywhere in the path if it's not expected\n if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n return false;\n }\n\n // Block constructor/prototype as non-terminal traversal keys to prevent\n // escaping the object graph into built-in constructors and prototypes.\n if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n return false;\n }\n }\n\n var obj = parent(object, path);\n return obj == null || delete obj[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseIteratee = require('./_baseIteratee'),\n basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n","export const TYPES = {\n EXTENDED: 'extended',\n CONFIG_MAPS: 'configMaps',\n LIMITS_CPU: 'limitsCpu',\n LIMITS_MEM: 'limitsMemory',\n PVC: 'persistentVolumeClaims',\n PODS: 'pods',\n REPLICATION_CONTROLLERS: 'replicationControllers',\n REQUESTS_CPU: 'requestsCpu',\n REQUESTS_MEMORY: 'requestsMemory',\n REQUESTS_STORAGE: 'requestsStorage',\n SECRETS: 'secrets',\n SERVICES: 'services',\n SERVICES_LOAD_BALANCERS: 'servicesLoadBalancers',\n SERVICES_NODE_PORTS: 'servicesNodePorts',\n};\n\nexport const RANCHER_TYPES = [\n {\n value: TYPES.EXTENDED,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.custom',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.CONFIG_MAPS,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.configMaps',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.LIMITS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.limitsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.LIMITS_MEM,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.limitsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n {\n value: TYPES.PVC,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.persistentVolumeClaims',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.PODS,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.pods',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.REPLICATION_CONTROLLERS,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.replicationControllers',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.REQUESTS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.requestsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.REQUESTS_MEMORY,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.requestsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n {\n value: TYPES.REQUESTS_STORAGE,\n units: 'storage',\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.requestsStorage',\n placeholderKey: 'resourceQuota.projectLimit.storagePlaceholder'\n },\n {\n value: TYPES.SECRETS,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.secrets',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.SERVICES,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.services',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.SERVICES_LOAD_BALANCERS,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.servicesLoadBalancers',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.SERVICES_NODE_PORTS,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.servicesNodePorts',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n];\n\nexport const HARVESTER_TYPES = [\n {\n value: TYPES.LIMITS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.limitsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.LIMITS_MEM,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.limitsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n {\n value: TYPES.REQUESTS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.requestsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.REQUESTS_MEMORY,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.requestsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n];\n\nexport const ROW_COMPUTED = {\n typeOption() {\n return this.types.find((type) => type.value === this.type.split('.')[0]);\n }\n};\n\nexport const QUOTA_COMPUTED = {\n mappedTypes() {\n return this.types\n .map((type) => ({\n label: this.t(type.labelKey),\n baseUnit: type.baseUnitKey ? this.t(type.baseUnitKey) : undefined,\n placeholder: this.t(type.placeholderKey),\n ...type,\n }));\n }\n};\n","export const protocol = ['http', 'https'];\n\n// Order from newest to oldest\nexport const sslVersions = ['TLSv1_2', 'TLSv1_1', 'TLSv1', 'SSLv23'];\n\nexport function updatePort(setter, port) {\n // We set the value to 0 then the actual value because if we exceed the maximum of\n // 65535 all subsequent values will continue to return 65535 which vue ignores and\n // allows the user to continue appending values in the input even the the stored value\n // remains 65535.\n setter(0);\n setter(normalizePort(port));\n}\n\nexport function normalizePort(port) {\n const portAsInt = Number.parseInt(port, 10);\n\n if (portAsInt < 1) {\n return 1;\n }\n\n if (portAsInt > 65535) {\n return 65535;\n }\n\n return portAsInt;\n}\n","const validCIDRregex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|2[0-9]|1[0-9]|[0-9])$/;\nconst validIPRegex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nexport function isValidCIDR(cidr) {\n return !!cidr.match(validCIDRregex);\n}\n\nexport function isValidIP(ip) {\n return !!ip.match(validIPRegex);\n}\n\nexport function isValidMac(value) {\n return /^[A-Fa-f0-9]{2}(-[A-Fa-f0-9]{2}){5}$|^[A-Fa-f0-9]{2}(:[A-Fa-f0-9]{2}){5}$/.test(value);\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import script from \"./CronTooltip.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CronTooltip.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CronTooltip.vue?vue&type=style&index=0&id=646c088c&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-646c088c\"]])\n\nexport default __exports__","export interface TooltipItem {\n value?: string;\n descKey?: string;\n}\n\nexport interface TooltipSection {\n type: 'rules' | 'explanation';\n items: TooltipItem[];\n}\n\nexport type CronField = 'minute' | 'hour' | 'dayOfMonth' | 'month' | 'dayOfWeek';\n\nexport const cronFields: CronField[] = ['minute', 'hour', 'dayOfMonth', 'month', 'dayOfWeek'];\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, vShow as _vShow, createElementVNode as _createElementVNode, withDirectives as _withDirectives, mergeProps as _mergeProps } from \"vue\"\n\nconst _hoisted_1 = { class: \"cron-row\" }\nconst _hoisted_2 = [\"id\"]\n\nimport {\n reactive, computed, watch, ref, nextTick\n} from 'vue';\nimport { useStore } from 'vuex';\nimport { isValidCron } from 'cron-validator';\nimport cronstrue from 'cronstrue';\nimport { createPopper, Instance as PopperInstance } from '@popperjs/core';\nimport { useI18n } from '@shell/composables/useI18n';\nimport LabeledInput from '@components/Form/LabeledInput/LabeledInput.vue';\nimport CronTooltip from './CronTooltip.vue';\nimport type { TooltipSection, CronField } from './types';\nimport { cronFields } from './types';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CronExpressionEditor',\n props: {\n cronExpression: {}\n },\n emits: [\"update:isValid\", \"update:readableCron\", \"update:cronExpression\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\n\n// eslint-disable-next-line\nconst emit = __emit;\n\nconst store = useStore();\nconst { t } = useI18n(store);\nconst fields: CronField[] = cronFields;\n\nconst fieldLabels: Record = {\n minute: 'component.cron.expressionEditor.label.minute',\n hour: 'component.cron.expressionEditor.label.hour',\n dayOfMonth: 'component.cron.expressionEditor.label.dayOfMonth',\n month: 'component.cron.expressionEditor.label.month',\n dayOfWeek: 'component.cron.expressionEditor.label.dayOfWeek',\n};\n\nfunction makeFieldRecord(value: T): Record {\n return cronFields.reduce((acc, f) => {\n acc[f] = value;\n\n return acc;\n }, {} as Record);\n}\n\nfunction parseCronToFields(expr: string): Record {\n const parts = expr?.trim().split(' ') || [];\n const record = makeFieldRecord('');\n\n fields.forEach((f, idx) => {\n record[f] = parts[idx] || '';\n });\n\n return record;\n}\n\nconst cronValues = reactive>(parseCronToFields(props.cronExpression || '* * * * *'));\nconst errors = reactive>(makeFieldRecord(false));\nconst focusedField = reactive>(makeFieldRecord(false));\nconst rootRef = ref(null);\nconst wrapperRefs: Record = makeFieldRecord(null);\nconst tooltipRefs: Record = makeFieldRecord(null);\nconst popperInstances: Record = makeFieldRecord(null);\n\nconst tooltipData: Record = {\n minute: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.minute.any' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.minute.at1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.minute.range' },\n { value: '*/5', descKey: 'component.cron.expressionEditor.minute.every5' },\n { value: '8/5', descKey: 'component.cron.expressionEditor.minute.start8' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.minute.allowed' },\n ]\n }\n ],\n hour: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.hour.any' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.hour.at1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.hour.range' },\n { value: '*/5', descKey: 'component.cron.expressionEditor.hour.every5' },\n { value: '8/5', descKey: 'component.cron.expressionEditor.hour.start8' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.hour.allowed' },\n ]\n }\n ],\n dayOfMonth: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.dayOfMonth.any' },\n { value: '?', descKey: 'component.cron.expressionEditor.dayOfMonth.omit' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.dayOfMonth.1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.dayOfMonth.range' },\n { value: '*/5', descKey: 'component.cron.expressionEditor.dayOfMonth.every5' },\n { value: '8/5', descKey: 'component.cron.expressionEditor.dayOfMonth.start8' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.dayOfMonth.allowed' },\n ]\n }\n ],\n month: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.month.any' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.month.1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.month.range' },\n { value: '*/2', descKey: 'component.cron.expressionEditor.month.every2' },\n { value: '3/2', descKey: 'component.cron.expressionEditor.month.start3' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.month.allowed' },\n { descKey: 'component.cron.expressionEditor.month.alias' },\n ]\n }\n ],\n dayOfWeek: [\n {\n type: 'rules',\n items: [\n { value: '*', descKey: 'component.cron.expressionEditor.dayOfWeek.any' },\n { value: '?', descKey: 'component.cron.expressionEditor.dayOfWeek.omit' },\n { value: '1,5', descKey: 'component.cron.expressionEditor.dayOfWeek.1and5' },\n { value: '1-5', descKey: 'component.cron.expressionEditor.dayOfWeek.range' },\n ]\n },\n {\n type: 'explanation',\n items: [\n { descKey: 'component.cron.expressionEditor.dayOfWeek.allowed' },\n { descKey: 'component.cron.expressionEditor.dayOfWeek.alias' },\n ]\n }\n ],\n};\n\nconst validateField = (field: CronField, value: string) => {\n if (!value) {\n errors[field] = true;\n\n return;\n }\n\n const exprMap: Record = {\n minute: `${ value } * * * *`,\n hour: `* ${ value } * * *`,\n dayOfMonth: `* * ${ value } * *`,\n month: `* * * ${ value } *`,\n dayOfWeek: `* * * * ${ value }`,\n };\n\n errors[field] = !isValidCron(exprMap[field], {\n alias: true,\n allowBlankDay: true,\n allowSevenAsSunday: true,\n });\n};\n\nfields.forEach((f) => validateField(f, cronValues[f]));\n\nconst isValid = computed(() => !Object.values(errors).some(Boolean));\nconst expression = computed(() => fields.map((f) => cronValues[f]).join(' '));\nconst readableCron = computed(() => {\n if (!isValid.value) return t('component.cron.expressionEditor.invalidCronExpression');\n try {\n return cronstrue.toString(expression.value);\n } catch {\n return t('component.cron.expressionEditor.invalidCronExpression');\n }\n});\n\nwatch(cronValues, () => {\n emit('update:cronExpression', expression.value);\n emit('update:readableCron', readableCron.value);\n emit('update:isValid', isValid.value);\n}, { deep: true, immediate: true });\n\nconst handleInput = (field: CronField, val: string) => {\n cronValues[field] = val;\n validateField(field, val);\n};\n\nconst handleFocus = async(field: CronField) => {\n focusedField[field] = true;\n await nextTick();\n if (wrapperRefs[field] && tooltipRefs[field]) {\n popperInstances[field] = createPopper(wrapperRefs[field], tooltipRefs[field], {\n placement: 'bottom-start',\n modifiers: [\n { name: 'flip', options: { fallbackPlacements: ['top-start', 'bottom-end'] } },\n { name: 'preventOverflow', options: { boundary: rootRef.value || document.body, padding: 4 } },\n { name: 'offset', options: { offset: [0, 4] } },\n ],\n });\n }\n};\n\nconst handleBlur = (field: CronField) => {\n focusedField[field] = false;\n popperInstances[field]?.destroy();\n popperInstances[field] = null;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _mergeProps({\n ref_key: \"rootRef\",\n ref: rootRef,\n class: \"cron-edit\"\n }, _ctx.$attrs), [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(fields), (field) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: field,\n ref_for: true,\n ref: el => _unref(wrapperRefs)[field] = el as HTMLElement,\n class: \"input-wrapper\"\n }, [\n _createVNode(LabeledInput, {\n label: _unref(t)(fieldLabels[field]),\n value: cronValues[field],\n status: errors[field] ? 'error' : undefined,\n tooltip: errors[field] ? _unref(t)('component.cron.expressionEditor.invalidValue') : '',\n \"aria-invalid\": !!errors[field],\n \"aria-label\": _unref(t)('component.cron.expressionEditor.a11y.examples', { label: _unref(t)(fieldLabels[field]) }),\n \"aria-describedby\": `tooltip-${field}`,\n \"onUpdate:value\": val => handleInput(field, val),\n onFocus: () => handleFocus(field),\n onBlur: () => handleBlur(field)\n }, null, 8, [\"label\", \"value\", \"status\", \"tooltip\", \"aria-invalid\", \"aria-label\", \"aria-describedby\", \"onUpdate:value\", \"onFocus\", \"onBlur\"]),\n _withDirectives(_createElementVNode(\"div\", {\n id: `tooltip-${field}`,\n ref_for: true,\n ref: el => _unref(tooltipRefs)[field] = el as HTMLElement,\n role: \"tooltip\",\n class: \"cron-tooltip-wrapper\"\n }, [\n _createVNode(CronTooltip, {\n sections: tooltipData[field]\n }, null, 8, [\"sections\"])\n ], 8, _hoisted_2), [\n [_vShow, focusedField[field]]\n ])\n ]))\n }), 128))\n ])\n ], 16))\n}\n}\n\n})","\n\n\n \n
\n
wrapperRefs[field] = el as HTMLElement\"\n class=\"input-wrapper\"\n >\n
handleInput(field, val)\"\n @focus=\"() => handleFocus(field)\"\n @blur=\"() => handleBlur(field)\"\n />\n tooltipRefs[field] = el as HTMLElement\"\n role=\"tooltip\"\n class=\"cron-tooltip-wrapper\"\n >\n \n
\n \n
\n
\n \n\n\n","import script from \"./CronExpressionEditor.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CronExpressionEditor.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CronExpressionEditor.vue?vue&type=style&index=0&id=24767521&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24767521\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { id: \"cron-editor-title\" }\nconst _hoisted_2 = {\n id: \"cron-editor-desc\",\n class: \"description\"\n}\nconst _hoisted_3 = {\n class: \"readableCron\",\n \"aria-live\": \"polite\"\n}\nconst _hoisted_4 = { class: \"cron-wildcards\" }\nconst _hoisted_5 = { class: \"symbol\" }\nconst _hoisted_6 = { class: \"desc\" }\nconst _hoisted_7 = { class: \"cron-examples\" }\nconst _hoisted_8 = { class: \"symbol\" }\nconst _hoisted_9 = { class: \"desc\" }\nconst _hoisted_10 = { class: \"modal-footer\" }\nconst _hoisted_11 = [\"disabled\"]\n\nimport {\n ref, watch, onMounted, onBeforeUnmount, nextTick\n} from 'vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from '@shell/composables/useI18n';\nimport AppModal from '@shell/components/AppModal.vue';\nimport CronExpressionEditor from './CronExpressionEditor.vue';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CronExpressionEditorModal',\n props: {\n cronExpression: {},\n show: { type: Boolean }\n },\n emits: [\"update:cronExpression\", \"update:show\", \"update:readableCron\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\n\n// eslint-disable-next-line\nconst emit = __emit;\n\nconst store = useStore();\nconst { t } = useI18n(store);\n\nconst localCron = ref(props.cronExpression ?? '* * * * *');\nconst localShow = ref(props.show);\nconst readableCron = ref('');\nconst isCronValid = ref(true);\n\nconst cronInfoRef = ref(null);\nconst modalBodyRef = ref(null);\nconst modalWidth = ref('600px');\n\nconst wildcards = [\n { symbol: '*', desc: 'component.cron.expressionEditorModal.wildcards.anyValue' },\n { symbol: 'X,Y', desc: 'component.cron.expressionEditorModal.wildcards.xAndY' },\n { symbol: 'X-Y', desc: 'component.cron.expressionEditorModal.wildcards.fromXtoY' },\n { symbol: '*/X', desc: 'component.cron.expressionEditorModal.wildcards.everyX' },\n { symbol: 'Y/X', desc: 'component.cron.expressionEditorModal.wildcards.everyXStartingY' },\n { symbol: 'Y-Z/X', desc: 'component.cron.expressionEditorModal.wildcards.everyXFromYtoZ' },\n];\n\nconst examples = [\n { cron: '0 0 * * *', desc: 'component.cron.expressionEditorModal.examples.dailyMidnight' },\n { cron: '0 */5 * * *', desc: 'component.cron.expressionEditorModal.examples.every5Hours' },\n { cron: '45 17 1 * *', desc: 'component.cron.expressionEditorModal.examples.day1At1745' },\n { cron: '30 8/1 * * 1-5', desc: 'component.cron.expressionEditorModal.examples.weekdaysAt0830' },\n { cron: '0 */1 * 3,4,5 *', desc: 'component.cron.expressionEditorModal.examples.marchToMayHourly' },\n { cron: '0 9-17/4 * * *', desc: 'component.cron.expressionEditorModal.examples.every4Hours9to17' },\n];\n\nconst closeModal = () => emit('update:show', false);\nconst confirmCron = () => {\n if (!isCronValid.value) return;\n emit('update:cronExpression', localCron.value);\n emit('update:readableCron', readableCron.value);\n closeModal();\n};\n\n// dynamically update modal width based on content\nconst updateWidth = () => {\n if (!modalBodyRef.value || !cronInfoRef.value) return;\n\n const bodyStyle = getComputedStyle(modalBodyRef.value);\n const padding = parseFloat(bodyStyle.paddingLeft) + parseFloat(bodyStyle.paddingRight);\n const extraBuffer = 10;\n const contentWidth = cronInfoRef.value.scrollWidth + padding + extraBuffer;\n\n // limit width to 90% of viewport\n modalWidth.value = `${ Math.min(contentWidth, window.innerWidth * 0.9) }px`;\n};\n\nwatch(() => props.cronExpression, (val) => {\n if (val !== undefined) localCron.value = val;\n});\nwatch(() => props.show, (val) => {\n localShow.value = val;\n\n if (val) {\n // reset cron to prop when modal opens\n localCron.value = props.cronExpression ?? '* * * * *';\n nextTick(updateWidth);\n }\n});\n\nonMounted(() => {\n nextTick(updateWidth);\n window.addEventListener('resize', updateWidth);\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('resize', updateWidth);\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (localShow.value)\n ? (_openBlock(), _createBlock(AppModal, {\n key: 0,\n width: modalWidth.value,\n name: \"cron-editor-modal\",\n \"custom-class\": \"cron-editor-modal\",\n \"aria-labelledby\": \"cron-editor-title\",\n \"aria-describedby\": \"cron-editor-desc\",\n \"trigger-focus-trap\": \"\",\n onClose: closeModal\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n ref_key: \"modalBodyRef\",\n ref: modalBodyRef,\n class: \"modal-body\"\n }, [\n _createElementVNode(\"h4\", _hoisted_1, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.title')), 1),\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.description')), 1),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(readableCron.value), 1),\n _createVNode(CronExpressionEditor, {\n \"cron-expression\": localCron.value,\n \"onUpdate:cronExpression\": _cache[0] || (_cache[0] = ($event: any) => ((localCron).value = $event)),\n \"readable-cron\": readableCron.value,\n \"onUpdate:readableCron\": _cache[1] || (_cache[1] = ($event: any) => ((readableCron).value = $event)),\n \"is-valid\": isCronValid.value,\n \"onUpdate:isValid\": _cache[2] || (_cache[2] = ($event: any) => ((isCronValid).value = $event)),\n class: \"custom-cron-editor\"\n }, null, 8, [\"cron-expression\", \"readable-cron\", \"is-valid\"]),\n _createElementVNode(\"div\", {\n ref_key: \"cronInfoRef\",\n ref: cronInfoRef,\n class: \"cron-info\"\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"h5\", null, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.wildcards.title')), 1),\n _createElementVNode(\"ul\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(wildcards, (item, idx) => {\n return _createElementVNode(\"li\", { key: idx }, [\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(item.symbol), 1),\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(t)(item.desc)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"h5\", null, _toDisplayString(_unref(t)('component.cron.expressionEditorModal.examples.title')), 1),\n _createElementVNode(\"ul\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(examples, (ex, idx) => {\n return _createElementVNode(\"li\", { key: idx }, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(ex.cron), 1),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(t)(ex.desc)), 1)\n ])\n }), 64))\n ])\n ])\n ], 512)\n ], 512),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"button\", {\n class: \"btn btn-sm role-secondary\",\n onClick: closeModal\n }, _toDisplayString(_unref(t)('generic.cancel')), 1),\n _createElementVNode(\"button\", {\n class: \"btn btn-sm role-primary ml-10\",\n disabled: !isCronValid.value,\n onClick: confirmCron\n }, _toDisplayString(_unref(t)('generic.confirm')), 9, _hoisted_11)\n ])\n ]),\n _: 1\n }, 8, [\"width\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n \n \n
\n {{ t('component.cron.expressionEditorModal.title') }}\n \n
\n {{ t('component.cron.expressionEditorModal.description') }}\n
\n\n
\n {{ readableCron }}\n
\n\n
\n\n
\n
\n
{{ t('component.cron.expressionEditorModal.wildcards.title') }} \n
\n \n {{ item.symbol }} \n {{ t(item.desc) }} \n \n \n
\n\n
\n
{{ t('component.cron.expressionEditorModal.examples.title') }} \n
\n \n {{ ex.cron }} \n {{ t(ex.desc) }} \n \n \n
\n
\n
\n\n \n \n \n\n\n","import script from \"./CronExpressionEditorModal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CronExpressionEditorModal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CronExpressionEditorModal.vue?vue&type=style&index=0&id=46c1ea1f&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-46c1ea1f\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ prefix }}\n \n \n \n \n {{ middle }}\n \n \n \n \n {{ suffix }}\n \n
\n \n","import { render } from \"./MessageLink.vue?vue&type=template&id=e05ba5fa\"\nimport script from \"./MessageLink.vue?vue&type=script&lang=js\"\nexport * from \"./MessageLink.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n {{ get(r, sideLabelField) }} \n
\n\n \n \n \n
\n \n {{ get(r, nameField) }}\n \n \n {{ get(r, descriptionField) }}\n
\n \n
\n \n
\n \n \n\n\n","import { render } from \"./SelectIconGrid.vue?vue&type=template&id=13c2dac6&scoped=true\"\nimport script from \"./SelectIconGrid.vue?vue&type=script&lang=js\"\nexport * from \"./SelectIconGrid.vue?vue&type=script&lang=js\"\n\nimport \"./SelectIconGrid.vue?vue&type=style&index=0&id=13c2dac6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-13c2dac6\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ text }} \n \n
\n \n\n\n","import { render } from \"./Tip.vue?vue&type=template&id=491e4180&scoped=true\"\nimport script from \"./Tip.vue?vue&type=script&lang=js\"\nexport * from \"./Tip.vue?vue&type=script&lang=js\"\n\nimport \"./Tip.vue?vue&type=style&index=0&id=491e4180&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-491e4180\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render } from \"./ArrayListSelect.vue?vue&type=template&id=313aeca6&scoped=true\"\nimport script from \"./ArrayListSelect.vue?vue&type=script&lang=js\"\nexport * from \"./ArrayListSelect.vue?vue&type=script&lang=js\"\n\nimport \"./ArrayListSelect.vue?vue&type=style&index=0&id=313aeca6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-313aeca6\"]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n","\n\n \n \n \n \n
\n
\n {{ t('membershipEditor.user') }} \n
\n
\n {{ t('membershipEditor.role') }} \n
\n
\n
\n \n \n \n
\n
\n {{ row.value.roleDisplay }}\n
\n
\n \n \n \n {{ t('generic.add') }}\n \n \n \n \n \n {{ t('generic.remove') }}\n \n \n \n \n\n\n","\n\n\n \n
\n \n
\n
\n \n\n
\n \n
\n
\n \n
\n \n {{ t('principal.name') }}: {{ principal.name || principal.loginName }} \n {{ t('principal.loginName') }}: {{ principal.loginName }} \n {{ t('principal.type') }}: {{ principal.displayType }} \n \n
\n
\n \n \n \n {{ principal.name }}\n ({{ principal.loginName }}) \n \n \n {{ principal.name }}\n \n \n {{ principal.loginName }}\n \n
\n \n {{ principal.displayType }}\n
\n \n \n\n
\n \n
\n \n {{ value }}\n
\n \n
\n \n\n\n","import { render } from \"./Principal.vue?vue&type=template&id=2e3be36f&scoped=true\"\nimport script from \"./Principal.vue?vue&type=script&lang=js\"\nexport * from \"./Principal.vue?vue&type=script&lang=js\"\n\nimport \"./Principal.vue?vue&type=style&index=0&id=2e3be36f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2e3be36f\"]])\n\nexport default __exports__","import { render } from \"./MembershipEditor.vue?vue&type=template&id=c4be6d5a&scoped=true\"\nimport script from \"./MembershipEditor.vue?vue&type=script&lang=js\"\nexport * from \"./MembershipEditor.vue?vue&type=script&lang=js\"\n\nimport \"./MembershipEditor.vue?vue&type=style&index=0&id=c4be6d5a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c4be6d5a\"]])\n\nexport default __exports__","import { render } from \"./ProjectMembershipEditor.vue?vue&type=template&id=0a642b08\"\nimport script from \"./ProjectMembershipEditor.vue?vue&type=script&lang=js\"\nexport * from \"./ProjectMembershipEditor.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n \n
\n
\n \n
\n\n
\n \n
\n\n
\n
0 ? 'span-3' : 'span-6']\"\n >\n \n
\n\n
\n \n
\n
\n
\n \n\n\n","export function normalizeName(str) {\n return (str || '')\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n}\n","import { render } from \"./NameNsDescription.vue?vue&type=template&id=44498374&scoped=true\"\nimport script from \"./NameNsDescription.vue?vue&type=script&lang=js\"\nexport * from \"./NameNsDescription.vue?vue&type=script&lang=js\"\n\nimport \"./NameNsDescription.vue?vue&type=style&index=0&id=44498374&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44498374\"]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n role: \"row\",\n class: \"row mb-10\"\n}\n\nimport { computed } from 'vue';\nimport { useStore } from 'vuex';\n\nimport Select from '@shell/components/form/Select';\nimport UnitInput from '@shell/components/form/UnitInput';\nimport { LabeledInput } from '@components/Form/LabeledInput';\nimport { RcButton } from '@components/RcButton';\n\nimport { TYPES } from './shared';\nimport { useI18n } from '@shell/composables/useI18n';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ResourceQuotaEntry',\n props: /*@__PURE__*/_mergeModels({\n id: {},\n index: {},\n mode: {},\n types: {}\n }, {\n \"resourceType\": {},\n \"resourceTypeModifiers\": {},\n \"resourceIdentifier\": {},\n \"resourceIdentifierModifiers\": {},\n \"projectLimit\": {},\n \"projectLimitModifiers\": {},\n \"namespaceDefaultLimit\": {},\n \"namespaceDefaultLimitModifiers\": {},\n }),\n emits: /*@__PURE__*/_mergeModels(['remove'], [\"update:resourceType\", \"update:resourceIdentifier\", \"update:projectLimit\", \"update:namespaceDefaultLimit\"]),\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\n\nconst emit = __emit;\n\nconst store = useStore();\nconst { t } = useI18n(store);\n\nconst resourceType = _useModel(__props, 'resourceType');\nconst resourceIdentifier = _useModel(__props, 'resourceIdentifier');\nconst projectLimit = _useModel(__props, 'projectLimit');\nconst namespaceDefaultLimit = _useModel(__props, 'namespaceDefaultLimit');\n\nconst typeOption = computed(() => {\n return props.types.find((type) => type.value === resourceType.value) || {};\n});\n\nconst isCustom = computed(() => {\n return resourceType.value === TYPES.EXTENDED;\n});\n\nconst removeAriaLabel = computed(() => {\n let identifier;\n\n if (isCustom.value) {\n identifier = resourceIdentifier.value || t('generic.ariaLabel.genericRow', { index: String(props.index) });\n } else {\n identifier = typeOption.value?.label || t('generic.ariaLabel.genericRow', { index: String(props.index) });\n }\n\n return t('resourceQuota.ariaLabel.remove', { identifier });\n});\n\nconst customTypeRules = computed(() => {\n // Return a validation rule that makes the field required when isCustom is true\n if (isCustom.value) {\n return [\n (value: string) => {\n if (!value) {\n return t('resourceQuota.errors.customTypeRequired');\n }\n\n return undefined;\n }\n ];\n }\n\n return [];\n});\n\nconst remove = (id: string) => {\n emit('remove', id);\n};\n\nconst updateResourceIdentifier = (resourceType: string) => {\n if (resourceType === TYPES.EXTENDED) {\n return;\n }\n\n resourceIdentifier.value = resourceType;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(Select), {\n value: resourceType.value,\n \"onUpdate:value\": [\n _cache[0] || (_cache[0] = ($event: any) => ((resourceType).value = $event)),\n updateResourceIdentifier\n ],\n class: \"mr-10\",\n mode: __props.mode,\n options: __props.types,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.resourceType', { row: __props.index }),\n \"data-testid\": \"projectrow-type-input\"\n }, null, 8, [\"value\", \"mode\", \"options\", \"aria-label\"]),\n _createVNode(_unref(LabeledInput), {\n value: resourceIdentifier.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((resourceIdentifier).value = $event)),\n disabled: !isCustom.value,\n required: isCustom.value,\n mode: __props.mode,\n placeholder: _unref(t)('resourceQuota.resourceIdentifier.placeholder'),\n rules: customTypeRules.value,\n \"require-dirty\": false,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.resourceIdentifier', { row: __props.index }),\n class: \"mr-10\",\n \"data-testid\": \"projectrow-custom-type-input\"\n }, null, 8, [\"value\", \"disabled\", \"required\", \"mode\", \"placeholder\", \"rules\", \"aria-label\"]),\n _createVNode(_unref(UnitInput), {\n value: projectLimit.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((projectLimit).value = $event)),\n class: \"mr-10\",\n mode: __props.mode,\n placeholder: typeOption.value.placeholder,\n increment: typeOption.value.increment,\n \"input-exponent\": typeOption.value.inputExponent,\n \"base-unit\": typeOption.value.baseUnit,\n \"output-modifier\": true,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.projectLimit', { row: __props.index }),\n \"data-testid\": \"projectrow-project-quota-input\"\n }, null, 8, [\"value\", \"mode\", \"placeholder\", \"increment\", \"input-exponent\", \"base-unit\", \"aria-label\"]),\n _createVNode(_unref(UnitInput), {\n value: namespaceDefaultLimit.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((namespaceDefaultLimit).value = $event)),\n mode: __props.mode,\n placeholder: typeOption.value.placeholder,\n increment: typeOption.value.increment,\n \"input-exponent\": typeOption.value.inputExponent,\n \"base-unit\": typeOption.value.baseUnit,\n \"output-modifier\": true,\n \"aria-label\": _unref(t)('resourceQuota.ariaLabel.namespaceDefaultLimit', { row: __props.index }),\n \"data-testid\": \"projectrow-namespace-quota-input\"\n }, null, 8, [\"value\", \"mode\", \"placeholder\", \"increment\", \"input-exponent\", \"base-unit\", \"aria-label\"]),\n _createVNode(_unref(RcButton), {\n variant: \"tertiary\",\n \"aria-label\": removeAriaLabel.value,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (remove(__props.id)))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(t)('generic.remove')), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ]))\n}\n}\n\n})","\n\n\n \n \n \n \n \n \n {{ t('generic.remove') }}\n \n
\n \n\n\n","import script from \"./ResourceQuotaEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ResourceQuotaEntry.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ResourceQuotaEntry.vue?vue&type=style&index=0&id=51c5ac53&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-51c5ac53\"]])\n\nexport default __exports__","import { render } from \"./Project.vue?vue&type=template&id=23e928ea&scoped=true\"\nimport script from \"./Project.vue?vue&type=script&lang=js\"\nexport * from \"./Project.vue?vue&type=script&lang=js\"\n\nimport \"./Project.vue?vue&type=style&index=0&id=23e928ea&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-23e928ea\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./SecretSelector.vue?vue&type=template&id=01b02e6e\"\nimport script from \"./SecretSelector.vue?vue&type=script&lang=js\"\nexport * from \"./SecretSelector.vue?vue&type=script&lang=js\"\n\nimport \"./SecretSelector.vue?vue&type=style&index=0&id=01b02e6e&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n errors = e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n\n \n \n \n \n \n
\n \n \n removeMatch(props.row.i)\"\n @update:value=\"e=>updateMatch(e,props.row.i)\"\n />\n \n \n \n {{ t('logging.flow.matches.addSelect') }}\n \n \n {{ t('logging.flow.matches.addExclude') }}\n \n \n \n \n\n \n \n opt.value\"\n >\n \n \n {{ option.label }}\n \n \n opt.value\"\n >\n \n \n {{ option.label }}\n \n \n \n\n \n \n \n \n \n \n \n\n\n","\n\n\n \n
\n \n
\n \n\n
\n {{ value.select ? t('logging.flow.matches.nodes.title.include') : t('logging.flow.matches.nodes.title.exclude') }}\n \n
\n
\n e.value\"\n />\n
\n
\n
\n
\n
\n {{ value.select ? t('logging.flow.matches.containerNames.title.include') : t('logging.flow.matches.containerNames.title.exclude') }}\n \n
\n
\n
\n
\n {{ value.select ? t('logging.flow.matches.namespaces.title.include') : t('logging.flow.matches.namespaces.title.exclude') }}\n \n
\n
\n
\n
\n \n","import { render } from \"./Match.vue?vue&type=template&id=1d33f8e3\"\nimport script from \"./Match.vue?vue&type=script&lang=js\"\nexport * from \"./Match.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=881d7730&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=881d7730&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-881d7730\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./awsElasticsearch.vue?vue&type=template&id=018c1a22\"\nimport script from \"./awsElasticsearch.vue?vue&type=script&lang=js\"\nexport * from \"./awsElasticsearch.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./azurestorage.vue?vue&type=template&id=a9cf09b6\"\nimport script from \"./azurestorage.vue?vue&type=script&lang=js\"\nexport * from \"./azurestorage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.configuration') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./cloudwatch.vue?vue&type=template&id=ef98655a\"\nimport script from \"./cloudwatch.vue?vue&type=script&lang=js\"\nexport * from \"./cloudwatch.vue?vue&type=script&lang=js\"\n\nimport \"./cloudwatch.vue?vue&type=style&index=0&id=ef98655a&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.certificate') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./datadog.vue?vue&type=template&id=16a984dc\"\nimport script from \"./datadog.vue?vue&type=script&lang=js\"\nexport * from \"./datadog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n\n","import { render } from \"./elasticsearch.vue?vue&type=template&id=23b190dc\"\nimport script from \"./elasticsearch.vue?vue&type=script&lang=js\"\nexport * from \"./elasticsearch.vue?vue&type=script&lang=js\"\n\nimport \"./elasticsearch.vue?vue&type=style&index=0&id=23b190dc&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./file.vue?vue&type=template&id=53ae325a\"\nimport script from \"./file.vue?vue&type=script&lang=js\"\nexport * from \"./file.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n \n","import { render } from \"./forward.vue?vue&type=template&id=6c319b78\"\nimport script from \"./forward.vue?vue&type=script&lang=js\"\nexport * from \"./forward.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./gcs.vue?vue&type=template&id=6d929cee&scoped=true\"\nimport script from \"./gcs.vue?vue&type=script&lang=js\"\nexport * from \"./gcs.vue?vue&type=script&lang=js\"\n\nimport \"./gcs.vue?vue&type=style&index=0&id=6d929cee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6d929cee\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./gelf.vue?vue&type=template&id=04900f7a\"\nimport script from \"./gelf.vue?vue&type=script&lang=js\"\nexport * from \"./gelf.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./kafka.vue?vue&type=template&id=4ba0638c\"\nimport script from \"./kafka.vue?vue&type=script&lang=js\"\nexport * from \"./kafka.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./kinesisStream.vue?vue&type=template&id=08109557\"\nimport script from \"./kinesisStream.vue?vue&type=script&lang=js\"\nexport * from \"./kinesisStream.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./logdna.vue?vue&type=template&id=40aa7568\"\nimport script from \"./logdna.vue?vue&type=script&lang=js\"\nexport * from \"./logdna.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.certificate') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./logz.vue?vue&type=template&id=51e93f05\"\nimport script from \"./logz.vue?vue&type=script&lang=js\"\nexport * from \"./logz.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.labels') }} \n \n
\n
\n
\n
\n
\n \n","import { render } from \"./loki.vue?vue&type=template&id=e7caaa0e\"\nimport script from \"./loki.vue?vue&type=script&lang=js\"\nexport * from \"./loki.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./newrelic.vue?vue&type=template&id=066e83f8\"\nimport script from \"./newrelic.vue?vue&type=script&lang=js\"\nexport * from \"./newrelic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n \n
\n
\n
\n
\n
\n \n\n","import { render } from \"./opensearch.vue?vue&type=template&id=0d09c670\"\nimport script from \"./opensearch.vue?vue&type=script&lang=js\"\nexport * from \"./opensearch.vue?vue&type=script&lang=js\"\n\nimport \"./opensearch.vue?vue&type=style&index=0&id=0d09c670&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('logging.output.sections.target') }} \n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.redis.format.title') }} \n \n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n \n
\n
\n
\n \n\n","import { render } from \"./redis.vue?vue&type=template&id=1b04d6cd\"\nimport script from \"./redis.vue?vue&type=script&lang=js\"\nexport * from \"./redis.vue?vue&type=script&lang=js\"\n\nimport \"./redis.vue?vue&type=style&index=0&id=1b04d6cd&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.access') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./s3.vue?vue&type=template&id=3422a3ee&scoped=true\"\nimport script from \"./s3.vue?vue&type=script&lang=js\"\nexport * from \"./s3.vue?vue&type=script&lang=js\"\n\nimport \"./s3.vue?vue&type=style&index=0&id=3422a3ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3422a3ee\"]])\n\nexport default __exports__","\n\n\n \n
\n
{{ t('logging.output.sections.target') }} \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
{{ t('logging.output.sections.access') }} \n
\n
\n
\n
{{ t('logging.output.sections.certificate') }} \n
\n
\n
\n
\n \n","import { render } from \"./splunkHec.vue?vue&type=template&id=92bc30c4\"\nimport script from \"./splunkHec.vue?vue&type=script&lang=js\"\nexport * from \"./splunkHec.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n","import { render } from \"./sumologic.vue?vue&type=template&id=773e8684\"\nimport script from \"./sumologic.vue?vue&type=script&lang=js\"\nexport * from \"./sumologic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('logging.output.sections.target') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.output.sections.certificate') }} \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.syslog.format.title') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ t('logging.syslog.buffer.title') }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import { render } from \"./syslog.vue?vue&type=template&id=fc78e272&scoped=true\"\nimport script from \"./syslog.vue?vue&type=script&lang=js\"\nexport * from \"./syslog.vue?vue&type=script&lang=js\"\n\nimport \"./syslog.vue?vue&type=style&index=0&id=fc78e272&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fc78e272\"]])\n\nexport default __exports__","\n\n \n
\n Receiver\n \n \n
\n
\n
Grouping \n
\n
\n
\n {{ t(\"monitoringRoute.groups.addGroupByLabel'\") }}\n \n \n
\n
\n
\n
Waiting and Intervals \n
\n
\n\n
Matchers \n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n \n","import { render } from \"./routeConfig.vue?vue&type=template&id=b4519b74\"\nimport script from \"./routeConfig.vue?vue&type=script&lang=js\"\nexport * from \"./routeConfig.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n (errors = e)\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n\n \n
\n
\n \n \n {{ t('networkpolicy.ingress.label') }}\n \n \n \n \n \n \n {{ t('networkpolicy.egress.label') }}\n \n \n \n \n \n \n {{ t('networkpolicy.selectors.label') }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n","\n\n\n \n \n","\n\n\n \n
\n
\n
\n {{ t(`networkpolicy.${type}.ruleLabel`) }}\n \n \n
\n \n \n \n \n
\n
\n
\n
\n
\n {{ t('networkpolicy.rules.ports.label') }}\n \n \n
\n \n \n \n \n
\n
\n
\n \n","\n\n\n \n \n","import { render } from \"./PolicyRulePort.vue?vue&type=template&id=7ade56b7\"\nimport script from \"./PolicyRulePort.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRulePort.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n
\n
\n \n {{ invalidCidrs.join(', ') }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n {{ t('networkpolicy.rules.namespace') }}\n \n
\n
\n \n
\n
\n
\n
\n \n {{ t('networkpolicy.rules.pod') }}\n \n
\n
\n \n
\n
\n
\n
\n \n\n\n","import { render } from \"./PolicyRuleTarget.vue?vue&type=template&id=1d89486c&scoped=true\"\nimport script from \"./PolicyRuleTarget.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRuleTarget.vue?vue&type=script&lang=js\"\n\nimport \"./PolicyRuleTarget.vue?vue&type=style&index=0&id=1d89486c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1d89486c\"]])\n\nexport default __exports__","import { render } from \"./PolicyRule.vue?vue&type=template&id=951fef2e\"\nimport script from \"./PolicyRule.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRule.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./PolicyRules.vue?vue&type=template&id=6ac390bc\"\nimport script from \"./PolicyRules.vue?vue&type=script&lang=js\"\nexport * from \"./PolicyRules.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=4e277037\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./basic.vue?vue&type=template&id=704da634\"\nimport script from \"./basic.vue?vue&type=script&lang=js\"\nexport * from \"./basic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./generic.vue?vue&type=template&id=19664d1e\"\nimport script from \"./generic.vue?vue&type=script&lang=js\"\nexport * from \"./generic.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=0e953ab4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./registry.vue?vue&type=template&id=8318b820\"\nimport script from \"./registry.vue?vue&type=script&lang=js\"\nexport * from \"./registry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n","import { render } from \"./ssh.vue?vue&type=template&id=72b950f0\"\nimport script from \"./ssh.vue?vue&type=script&lang=js\"\nexport * from \"./ssh.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n","import { render } from \"./tls.vue?vue&type=template&id=f6832e80\"\nimport script from \"./tls.vue?vue&type=script&lang=js\"\nexport * from \"./tls.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"h3{margin-top:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row{margin-bottom:5px}.vertically-center{padding:20px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row{margin-bottom:5px}.vertically-center{padding:20px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row{margin-bottom:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cron-row[data-v-24767521]{display:flex;justify-content:center;flex-wrap:wrap;gap:8px}.input-wrapper[data-v-24767521]{max-width:120px;flex:1 1 auto}.input-wrapper .label[data-v-24767521]{color:var(--label-secondary);font-size:12px}.cron-tooltip-wrapper[data-v-24767521]{padding:16px;background:var(--body-bg);border:1px solid var(--border);border-radius:var(--border-radius-lg);box-shadow:0 2px 8px var(--shadow);display:inline-block;z-index:2}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#modals .cron-editor-modal{border-radius:var(--border-radius-lg)}.modal-body[data-v-46c1ea1f]{padding:20px 20px 8px}.modal-body .description[data-v-46c1ea1f]{margin:16px 0}.modal-body .readableCron[data-v-46c1ea1f]{padding:16px;background-color:var(--disabled-banner-bg)}.modal-body .custom-cron-editor[data-v-46c1ea1f]{margin:64px auto;max-width:660px}.modal-body .cron-info[data-v-46c1ea1f]{display:flex;gap:52px;flex-wrap:nowrap;overflow-x:auto}.modal-body .cron-info ul[data-v-46c1ea1f]{list-style:none;padding:0;margin:16px 0;display:grid;grid-template-columns:max-content 1fr;gap:8px 10px}.modal-body .cron-info ul li[data-v-46c1ea1f]{display:contents;white-space:nowrap;color:var(--input-label);font-size:12px}.modal-body .cron-info ul .symbol[data-v-46c1ea1f]{color:var(--body-text)}.modal-footer[data-v-46c1ea1f]{border-top:1px solid var(--border);display:flex;padding:10px 20px;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cron-tooltip-content-wrapper[data-v-646c088c]{display:flex;flex-direction:column}.cron-tooltip-content-wrapper .cron-tooltip-section[data-v-646c088c]{list-style:none;padding:0;margin:0}.cron-tooltip-content-wrapper .cron-tooltip-section.cron-tooltip-rules[data-v-646c088c]{display:grid;grid-template-columns:max-content 1fr;gap:12px}.cron-tooltip-content-wrapper .cron-tooltip-section.cron-tooltip-rules li[data-v-646c088c]{display:contents;align-items:center}.cron-tooltip-content-wrapper .cron-tooltip-section.cron-tooltip-explanation[data-v-646c088c]{margin-top:20px;display:grid;gap:8px}.cron-tooltip-content-wrapper .cron-tooltip-section li[data-v-646c088c]{white-space:nowrap}.cron-tooltip-content-wrapper .cron-tooltip-section li .symbol[data-v-646c088c]{color:var(--body-text)}.cron-tooltip-content-wrapper .cron-tooltip-section li .desc[data-v-646c088c]{color:var(--input-label)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".grid[data-v-13c2dac6]{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:0 -10px}@media only screen and (min-width:480px){.grid .item[data-v-13c2dac6]{width:100%}}@media only screen and (min-width:768px){.grid .item[data-v-13c2dac6]{width:calc(50% - 20px)}}@media only screen and (min-width:992px){.grid .item[data-v-13c2dac6]{width:calc(33.33333% - 20px)}}@media only screen and (min-width:1281px){.grid .item[data-v-13c2dac6]{width:calc(25% - 20px)}}.grid .item[data-v-13c2dac6]{height:135px;margin:10px;padding:10px;position:relative;border:1px solid var(--border);text-decoration:none!important;color:var(--body-text)!important}.grid .item[data-v-13c2dac6]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.grid .item[data-v-13c2dac6]:hover:not(.disabled){box-shadow:0 0 30px var(--shadow);transition:box-shadow .1s ease-in-out;cursor:pointer;text-decoration:none!important}.grid .item .side-label[data-v-13c2dac6]{position:absolute;top:10px;right:10px;padding:2px 5px}.grid .item .side-label.indicator[data-v-13c2dac6]{top:0;right:0;left:0}.grid .item .side-label label[data-v-13c2dac6],.grid .item label.deploys-os-label[data-v-13c2dac6],.grid .item label.os-incompatible-label[data-v-13c2dac6]{font-size:12px;line-height:12px;text-align:center;display:block;white-space:no-wrap;text-overflow:ellipsis;color:var(--card-badge-text);margin:0}.grid .item .deploys-os-label[data-v-13c2dac6],.grid .item .os-incompatible-label[data-v-13c2dac6]{position:absolute;bottom:10px;padding:2px 5px;right:10px}.grid .item label.os-incompatible-label[data-v-13c2dac6]{color:var(--warning);background-color:var(--warning-banner-bg)}.grid .item .logo[data-v-13c2dac6]{text-align:center;position:absolute;left:25px;top:37.5px;width:60px;height:60px;border-radius:calc(var(--border-radius)*2);overflow:hidden;background-color:#fff}.grid .item .logo img[data-v-13c2dac6]{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}.grid .item .logo i[data-v-13c2dac6]{background-position:50%;background-repeat:no-repeat;display:flex;height:56px;margin:2px;width:56px}.grid .item.rancher .deploys-os-label[data-v-13c2dac6],.grid .item.rancher .side-label[data-v-13c2dac6]{background-color:var(--app-rancher-accent)}.grid .item.rancher .deploys-os-label label[data-v-13c2dac6],.grid .item.rancher .side-label label[data-v-13c2dac6]{color:var(--app-rancher-accent-text)}.grid .item.rancher[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-rancher-accent)}.grid .item.partner .deploys-os-label[data-v-13c2dac6],.grid .item.partner .side-label[data-v-13c2dac6]{background-color:var(--app-partner-accent)}.grid .item.partner .deploys-os-label label[data-v-13c2dac6],.grid .item.partner .side-label label[data-v-13c2dac6]{color:var(--app-partner-accent-text)}.grid .item.partner[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-partner-accent)}.grid .item.color1 .deploys-os-label[data-v-13c2dac6],.grid .item.color1 .side-label[data-v-13c2dac6]{background-color:var(--app-color1-accent)}.grid .item.color1 .deploys-os-label label[data-v-13c2dac6],.grid .item.color1 .side-label label[data-v-13c2dac6]{color:var(--app-color1-accent-text)}.grid .item.color1[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color1-accent)}.grid .item.color2 .deploys-os-label[data-v-13c2dac6],.grid .item.color2 .side-label[data-v-13c2dac6]{background-color:var(--app-color2-accent)}.grid .item.color2 .deploys-os-label label[data-v-13c2dac6],.grid .item.color2 .side-label label[data-v-13c2dac6]{color:var(--app-color2-accent-text)}.grid .item.color2[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color2-accent)}.grid .item.color3 .deploys-os-label[data-v-13c2dac6],.grid .item.color3 .side-label[data-v-13c2dac6]{background-color:var(--app-color3-accent)}.grid .item.color3 .deploys-os-label label[data-v-13c2dac6],.grid .item.color3 .side-label label[data-v-13c2dac6]{color:var(--app-color3-accent-text)}.grid .item.color3[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color3-accent)}.grid .item.color4 .deploys-os-label[data-v-13c2dac6],.grid .item.color4 .side-label[data-v-13c2dac6]{background-color:var(--app-color4-accent)}.grid .item.color4 .deploys-os-label label[data-v-13c2dac6],.grid .item.color4 .side-label label[data-v-13c2dac6]{color:var(--app-color4-accent-text)}.grid .item.color4[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color4-accent)}.grid .item.color5 .deploys-os-label[data-v-13c2dac6],.grid .item.color5 .side-label[data-v-13c2dac6]{background-color:var(--app-color5-accent)}.grid .item.color5 .deploys-os-label label[data-v-13c2dac6],.grid .item.color5 .side-label label[data-v-13c2dac6]{color:var(--app-color5-accent-text)}.grid .item.color5[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color5-accent)}.grid .item.color6 .deploys-os-label[data-v-13c2dac6],.grid .item.color6 .side-label[data-v-13c2dac6]{background-color:var(--app-color6-accent)}.grid .item.color6 .deploys-os-label label[data-v-13c2dac6],.grid .item.color6 .side-label label[data-v-13c2dac6]{color:var(--app-color6-accent-text)}.grid .item.color6[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color6-accent)}.grid .item.color7 .deploys-os-label[data-v-13c2dac6],.grid .item.color7 .side-label[data-v-13c2dac6]{background-color:var(--app-color7-accent)}.grid .item.color7 .deploys-os-label label[data-v-13c2dac6],.grid .item.color7 .side-label label[data-v-13c2dac6]{color:var(--app-color7-accent-text)}.grid .item.color7[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color7-accent)}.grid .item.color8 .deploys-os-label[data-v-13c2dac6],.grid .item.color8 .side-label[data-v-13c2dac6]{background-color:var(--app-color8-accent)}.grid .item.color8 .deploys-os-label label[data-v-13c2dac6],.grid .item.color8 .side-label label[data-v-13c2dac6]{color:var(--app-color8-accent-text)}.grid .item.color8[data-v-13c2dac6]:hover:not(.disabled){border-color:var(--app-color8-accent)}.grid .item[data-v-13c2dac6]:hover:not(.disabled){background-position:100%;border-left-width:1px}.grid .item:hover:not(.disabled) .logo[data-v-13c2dac6]{left:25px}.grid .item:hover:not(.disabled) .name[data-v-13c2dac6]{margin-left:85px}.grid .item .name[data-v-13c2dac6]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:115px;margin:0;margin-left:85px}.grid .item.has-description .name[data-v-13c2dac6]{margin-top:10px;line-height:normal}.grid .item.has-description.has-side-label .name[data-v-13c2dac6]{margin-top:15px}.grid .item .description[data-v-13c2dac6]{margin-top:10px;margin-left:85px;margin-right:10px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;text-overflow:ellipsis;color:var(--text-muted)!important}.grid .disabled[data-v-13c2dac6]{opacity:.5;cursor:not-allowed}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tip[data-v-491e4180]{color:var(--disabled-text);display:flex;align-items:center}.my-icon[data-v-491e4180]{font-size:16px;margin-right:2px}.text[data-v-491e4180]{font-size:14px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".principal[data-v-2e3be36f]{display:grid;grid-template-areas:\\\"avatar name\\\" \\\"avatar description\\\";grid-template-columns:40px auto;grid-template-rows:auto 20px;-moz-column-gap:10px;column-gap:10px}.principal th[data-v-2e3be36f]{text-align:left;font-weight:400;padding-right:10px}.principal.showLabels[data-v-2e3be36f]{grid-template-areas:\\\"avatar name\\\";grid-template-columns:60px auto;grid-template-rows:60px;-moz-column-gap:0;column-gap:0}.principal.showLabels .name[data-v-2e3be36f]{line-height:unset}.principal.showLabels table tr td[data-v-2e3be36f]:not(:first-of-type){padding-left:10px}.principal .avatar[data-v-2e3be36f]{grid-area:avatar;text-align:center}.principal .avatar DIV.empty[data-v-2e3be36f]{border:1px solid var(--border);line-height:40px}.principal .avatar IMG[data-v-2e3be36f]{width:40px;height:40px}.principal .avatar DIV.round[data-v-2e3be36f],.principal .avatar IMG.round[data-v-2e3be36f]{border-radius:50%}.principal .name[data-v-2e3be36f]{grid-area:name;line-height:20px;overflow-wrap:anywhere}.principal .description[data-v-2e3be36f]{grid-area:description;line-height:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-313aeca6] .unlabeled-select{height:61px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".role[data-v-c4be6d5a]{display:flex;align-items:center;flex-direction:row}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button[data-v-44498374]{all:unset;height:0;position:relative;top:-35px;float:right;margin-right:7px;cursor:pointer}button .align-value[data-v-44498374]{padding-top:7px}.row.name-ns-description[data-v-44498374]{max-height:61px}.row .namespace-select[data-v-44498374] .labeled-select{min-width:40%}.row .namespace-select[data-v-44498374] .labeled-select .v-select.inline.vs--single{padding-bottom:2px}.row.flip-direction[data-v-44498374]{flex-direction:column}.row.flip-direction.name-ns-description[data-v-44498374]{max-height:none}.row.flip-direction>div[data-v-44498374]>*{margin-bottom:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headers[data-v-23e928ea]{display:flex;flex-direction:row;justify-content:space-evenly;align-items:center;border-bottom:1px solid var(--border);height:30px;width:calc(100% - 75px)}.headers div[data-v-23e928ea]{width:100%}.required[data-v-23e928ea]{color:var(--error)}.project-quotas-footer[data-v-23e928ea]{margin-top:24px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".row[data-v-51c5ac53]{display:flex;flex-direction:row;justify-content:space-evenly}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".secret-selector{width:100%}.secret-selector label{display:block}.secret-selector .labeled-select{min-height:61px}.secret-selector .vs__selected-options{padding:8px 0 7px 0}.secret-selector label{display:inline-block}.secret-selector.show-key-selector .input-container>*{display:inline-block;width:50%}.secret-selector.show-key-selector .input-container>.labeled-select.focused{z-index:10}.secret-selector.show-key-selector .input-container>:first-child{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}.secret-selector.show-key-selector .input-container>:last-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none;float:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-881d7730] .icon-info{margin-top:-3px;margin-right:4px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overwrite[data-v-6d929cee]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overwrite[data-v-3422a3ee]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".insecure[data-v-fc78e272]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".namespace-pod-rule[data-v-1d89486c]{display:table;width:100px;padding:0,10px,0,0;text-align:center}.namespace-pod-rule .label[data-v-1d89486c]{display:table-cell;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseUnset = require('./_baseUnset'),\n isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n\n // Prevent prototype pollution:\n // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n var index = -1,\n length = path.length;\n\n if (!length) {\n return true;\n }\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n // Always block \"__proto__\" anywhere in the path if it's not expected\n if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n return false;\n }\n\n // Block constructor/prototype as non-terminal traversal keys to prevent\n // escaping the object graph into built-in constructors and prototypes.\n if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n return false;\n }\n }\n\n var obj = parent(object, path);\n return obj == null || delete obj[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseIteratee = require('./_baseIteratee'),\n basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n","export const TYPES = {\n EXTENDED: 'extended',\n CONFIG_MAPS: 'configMaps',\n LIMITS_CPU: 'limitsCpu',\n LIMITS_MEM: 'limitsMemory',\n PVC: 'persistentVolumeClaims',\n PODS: 'pods',\n REPLICATION_CONTROLLERS: 'replicationControllers',\n REQUESTS_CPU: 'requestsCpu',\n REQUESTS_MEMORY: 'requestsMemory',\n REQUESTS_STORAGE: 'requestsStorage',\n SECRETS: 'secrets',\n SERVICES: 'services',\n SERVICES_LOAD_BALANCERS: 'servicesLoadBalancers',\n SERVICES_NODE_PORTS: 'servicesNodePorts',\n};\n\nexport const RANCHER_TYPES = [\n {\n value: TYPES.EXTENDED,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.custom',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.CONFIG_MAPS,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.configMaps',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.LIMITS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.limitsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.LIMITS_MEM,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.limitsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n {\n value: TYPES.PVC,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.persistentVolumeClaims',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.PODS,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.pods',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.REPLICATION_CONTROLLERS,\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.replicationControllers',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.REQUESTS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.requestsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.REQUESTS_MEMORY,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.requestsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n {\n value: TYPES.REQUESTS_STORAGE,\n units: 'storage',\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.requestsStorage',\n placeholderKey: 'resourceQuota.projectLimit.storagePlaceholder'\n },\n {\n value: TYPES.SECRETS,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.secrets',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.SERVICES,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.services',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.SERVICES_LOAD_BALANCERS,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.servicesLoadBalancers',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n {\n value: TYPES.SERVICES_NODE_PORTS,\n units: 'unitless',\n inputExponent: 0,\n baseUnit: '',\n labelKey: 'resourceQuota.servicesNodePorts',\n placeholderKey: 'resourceQuota.projectLimit.unitlessPlaceholder'\n },\n];\n\nexport const HARVESTER_TYPES = [\n {\n value: TYPES.LIMITS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.limitsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.LIMITS_MEM,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.limitsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n {\n value: TYPES.REQUESTS_CPU,\n inputExponent: -1,\n baseUnitKey: 'suffix.cpus',\n labelKey: 'resourceQuota.requestsCpu',\n placeholderKey: 'resourceQuota.projectLimit.cpuPlaceholder'\n },\n {\n value: TYPES.REQUESTS_MEMORY,\n inputExponent: 2,\n increment: 1024,\n labelKey: 'resourceQuota.requestsMemory',\n placeholderKey: 'resourceQuota.projectLimit.memoryPlaceholder'\n },\n];\n\nexport const ROW_COMPUTED = {\n typeOption() {\n return this.types.find((type) => type.value === this.type.split('.')[0]);\n }\n};\n\nexport const QUOTA_COMPUTED = {\n mappedTypes() {\n return this.types\n .map((type) => ({\n label: this.t(type.labelKey),\n baseUnit: type.baseUnitKey ? this.t(type.baseUnitKey) : undefined,\n placeholder: this.t(type.placeholderKey),\n ...type,\n }));\n }\n};\n","export const protocol = ['http', 'https'];\n\n// Order from newest to oldest\nexport const sslVersions = ['TLSv1_2', 'TLSv1_1', 'TLSv1', 'SSLv23'];\n\nexport function updatePort(setter, port) {\n // We set the value to 0 then the actual value because if we exceed the maximum of\n // 65535 all subsequent values will continue to return 65535 which vue ignores and\n // allows the user to continue appending values in the input even the the stored value\n // remains 65535.\n setter(0);\n setter(normalizePort(port));\n}\n\nexport function normalizePort(port) {\n const portAsInt = Number.parseInt(port, 10);\n\n if (portAsInt < 1) {\n return 1;\n }\n\n if (portAsInt > 65535) {\n return 65535;\n }\n\n return portAsInt;\n}\n","const validCIDRregex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|2[0-9]|1[0-9]|[0-9])$/;\nconst validIPRegex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nexport function isValidCIDR(cidr) {\n return !!cidr.match(validCIDRregex);\n}\n\nexport function isValidIP(ip) {\n return !!ip.match(validIPRegex);\n}\n\nexport function isValidMac(value) {\n return /^[A-Fa-f0-9]{2}(-[A-Fa-f0-9]{2}){5}$|^[A-Fa-f0-9]{2}(:[A-Fa-f0-9]{2}){5}$/.test(value);\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./HarvesterHostBasic.vue?vue&type=template&id=bc500e7c&scoped=true\"\nimport script from \"./HarvesterHostBasic.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHostBasic.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterHostBasic.vue?vue&type=style&index=0&id=bc500e7c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bc500e7c\"]])\n\nexport default __exports__","\n\n\n \n \n \n\n\n","import { render } from \"./VirtualMachineInstance.vue?vue&type=template&id=d605095e&scoped=true\"\nimport script from \"./VirtualMachineInstance.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineInstance.vue?vue&type=script&lang=js\"\n\nimport \"./VirtualMachineInstance.vue?vue&type=style&index=0&id=d605095e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d605095e\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n \n \n \n {{ prop }}\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n
\n {{ t('harvester.host.disk.conditions') }}:\n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n\n\n","import { render } from \"./HarvesterHostDisk.vue?vue&type=template&id=2f2890f0&scoped=true\"\nimport script from \"./HarvesterHostDisk.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHostDisk.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterHostDisk.vue?vue&type=style&index=0&id=2f2890f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2f2890f0\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t('resourceTabs.conditions.tab') }}:\n \n
\n
\n
\n
\n
\n
\n \n","\n\n\n \n
\n
\n
\n
\n \n \n {{ value.promiscuous === 'true' ? t('generic.yes') : t('generic.no') }}\n \n \n
\n
\n
\n \n","import { render } from \"./LinkStatus.vue?vue&type=template&id=464d8096\"\nimport script from \"./LinkStatus.vue?vue&type=script&lang=js\"\nexport * from \"./LinkStatus.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=0daa1cf5\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ t('harvester.host.ksmtuned.configure') }}\n \n \n\n \n
\n \n
\n
\n \n
\n\n
\n \n
\n
\n\n \n
\n\n
{{ t('harvester.host.ksmtuned.parameters.title') }} \n
\n
\n \n
\n
\n \n
\n\n
\n \n
\n
\n\n
\n
\n\n \n
\n
\n \n \n
\n
\n \n \n {{ ksmdPhase }} \n \n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n\n
\n
\n \n
\n \n","import { render } from \"./HarvesterKsmtuned.vue?vue&type=template&id=759a21a0\"\nimport script from \"./HarvesterKsmtuned.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterKsmtuned.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.host.hugepages.meminfo') }} \n\n \n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n \n
\n
\n \n \n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n \n","import { render } from \"./HarvesterHugepages.vue?vue&type=template&id=f842cf10\"\nimport script from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./HarvesterSeeder.vue?vue&type=template&id=e3661a34\"\nimport script from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=12c23ff2\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n\n \n \n {{ registrationURL }}\n \n \n \n \n","import { render } from \"./harvesterhci.io.management.cluster.vue?vue&type=template&id=66a38698\"\nimport script from \"./harvesterhci.io.management.cluster.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.management.cluster.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","\n\n\n \n \n \n \n \n {{ row.nameDisplay }}\n \n \n {{ row.nameDisplay }}\n \n \n \n \n \n \n","import { render } from \"./BackupList.vue?vue&type=template&id=7bb13e16\"\nimport script from \"./BackupList.vue?vue&type=script&lang=js\"\nexport * from \"./BackupList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n {{ row.nameDisplay }}\n \n \n {{ row.nameDisplay }}\n \n \n \n \n \n \n","import { render } from \"./SnapshotList.vue?vue&type=template&id=56e72150\"\nimport script from \"./SnapshotList.vue?vue&type=script&lang=js\"\nexport * from \"./SnapshotList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=2347e8b7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2347e8b7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2347e8b7\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n \n\n \n\n \n\n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.secret.vue?vue&type=template&id=16758c8a&scoped=true\"\nimport script from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.secret.vue?vue&type=style&index=0&id=16758c8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-16758c8a\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n\n \n \n \n
\n \n
\n
\n \n \n
\n \n {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})\n \n \n
\n \n \n
\n
\n
\n \n \n
0\">\n \n {{ rom.name }}\n \n \n
\n {{ t(\"harvester.virtualMachine.detail.notAvailable\") }}\n \n
\n \n \n
\n
\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n\n
\n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=728b90de\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n
\n
\n
\n \n \n \n
\n \n {{ url }}\n
\n \n \n
\n
\n\n \n\n \n\n \n\n \n\n \n
\n
\n {{ t('harvester.image.encryptionSecret') }}\n
\n
\n {{ encryptionSecret }}\n \n
\n {{ encryptionSecret }}\n \n
\n —\n \n
\n
\n\n \n
\n
\n {{ t('harvester.image.sourceImage') }}\n
\n
\n {{ sourceImageId }}\n \n
\n {{ sourceImageId }}\n \n
\n —\n \n
\n
\n\n \n\n \n
\n
\n {{ t('tableHeaders.message') }}\n
\n
\n {{ errorMessage }}\n
\n
\n
\n \n \n \n \n \n \n\n\n","\n\n\n \n \n","import { render } from \"./Storage.vue?vue&type=template&id=f2a31958\"\nimport script from \"./Storage.vue?vue&type=script&lang=js\"\nexport * from \"./Storage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=0c6c35c8&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0c6c35c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c6c35c8\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n\n \n\n \n\n \n
\n
\n \n \n
\n \n {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})\n \n \n
\n \n \n
\n
\n
\n \n \n
0\">\n \n {{ rom.name }}\n \n \n
\n {{ t(\"harvester.virtualMachine.detail.notAvailable\") }}\n \n
\n \n \n
\n
\n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n\n
\n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=43393560\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n
\n \n {{ t(\"harvester.vpc.topology.loading\") }}\n
\n
\n
\n
{{ t(\"harvester.vpc.topology.empty\") }}
\n
\n\n
\n \n \n \n \n \n
\n {{ data.name }}\n {{ t(\"harvester.vpc.topology.labels.peering\") }} \n
\n
\n \n\n \n\n \n \n \n \n
\n {{ data.name }}\n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.cidr\") }}: {{ data.cidr }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.provider\") }}:\n {{ data.provider }}\n
\n
\n
\n \n\n \n \n \n \n
\n {{ data.name }}\n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.type\") }}: {{ data.nadType }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.clusterNetwork\") }}:\n {{ data.clusterNetwork }}\n
\n
\n
\n \n\n \n \n \n \n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.subnet\") }}:\n {{ iface.subnet }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.network\") }}:\n {{ iface.network }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.ip\") }}: {{ iface.ip }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.mac\") }}: {{ iface.mac }}\n
\n
\n
\n
\n \n\n \n \n \n \n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.subnet\") }}:\n {{ iface.subnet }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.network\") }}:\n {{ iface.network }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.ip\") }}: {{ iface.ip }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.mac\") }}: {{ iface.mac }}\n
\n
\n
\n
\n \n\n \n \n \n
\n \n\n\n","import { render } from \"./kubeovn.io.vpc.vue?vue&type=template&id=e05b3044&scoped=true\"\nimport script from \"./kubeovn.io.vpc.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.vpc.vue?vue&type=script&lang=js\"\n\nimport \"./kubeovn.io.vpc.vue?vue&type=style&index=0&id=e05b3044&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e05b3044\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n {{ ssh.id }}\n
\n
\n
\n {{ ssh.publicKey }}\n \n \n \n
\n
\n ******* \n \n
\n
\n
\n \n\n\n","import { render } from \"./VirtualMachineKeypairs.vue?vue&type=template&id=67f09e09&scoped=true\"\nimport script from \"./VirtualMachineKeypairs.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineKeypairs.vue?vue&type=script&lang=js\"\n\nimport \"./VirtualMachineKeypairs.vue?vue&type=style&index=0&id=67f09e09&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-67f09e09\"]])\n\nexport default __exports__","\n\n\n \n
\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n \n","\n\n\n \n \n \n {{ value }}\n
\n \n {{ row.displayMessage }}\n
\n \n \n \n","import { render } from \"./VirtualMachineEvents.vue?vue&type=template&id=1d2655fa\"\nimport script from \"./VirtualMachineEvents.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineEvents.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./VirtualMachineMigration.vue?vue&type=template&id=71a24c48\"\nimport script from \"./VirtualMachineMigration.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineMigration.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n \n \n
\n {{ value.nameDisplay }}\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n
\n
\n \n \n {{ hostname }}\n
\n \n \n
\n\n
\n
\n \n \n {{ node }}\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n \n
\n\n
\n \n
\n
\n\n
\n\n
{{ t('harvester.virtualMachine.detail.tabs.configurations') }} \n\n
\n
\n
\n \n \n \n {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})\n \n \n \n \n
\n
\n
\n \n \n
0\">\n \n {{ rom.name }}\n \n \n
\n {{ t(\"harvester.virtualMachine.detail.notAvailable\") }}\n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n\n\n","import { render } from \"./VirtualMachineBasics.vue?vue&type=template&id=9ed3a482&scoped=true\"\nimport script from \"./VirtualMachineBasics.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineBasics.vue?vue&type=script&lang=js\"\n\nimport \"./VirtualMachineBasics.vue?vue&type=style&index=0&id=9ed3a482&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9ed3a482\"]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=5f408a0d\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n","import { render } from \"./loadbalancer.harvesterhci.io.ippool.vue?vue&type=template&id=623c120b\"\nimport script from \"./loadbalancer.harvesterhci.io.ippool.vue?vue&type=script&lang=js\"\nexport * from \"./loadbalancer.harvesterhci.io.ippool.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n 10 ? true : false\"\n />\n \n \n \n \n \n \n \n \n \n","import { render } from \"./loadbalancer.harvesterhci.io.loadbalancer.vue?vue&type=template&id=5dd05171\"\nimport script from \"./loadbalancer.harvesterhci.io.loadbalancer.vue?vue&type=script&lang=js\"\nexport * from \"./loadbalancer.harvesterhci.io.loadbalancer.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n","import { render } from \"./network.harvesterhci.io.vlanconfig.vue?vue&type=template&id=3ff8fe62\"\nimport script from \"./network.harvesterhci.io.vlanconfig.vue?vue&type=script&lang=js\"\nexport * from \"./network.harvesterhci.io.vlanconfig.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".role[data-v-bc500e7c]{display:flex}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".close[data-v-2f2890f0]{top:10px;right:10px;padding:0;position:absolute}.disk[data-v-2f2890f0]{position:relative}.disk .secret-name[data-v-2f2890f0]{height:61px}.disk[data-v-2f2890f0]:not(:last-of-type){padding-bottom:10px;margin-bottom:30px}.flex[data-v-2f2890f0]{display:flex;justify-content:space-between}.badge-state[data-v-2f2890f0]{padding:2px 5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#host-instances[data-v-d605095e] thead th{vertical-align:middle}#host-instances[data-v-d605095e] .state{display:flex}#host-instances[data-v-d605095e] .state .vmstate{margin-right:6px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-2347e8b7]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".entry[data-v-16758c8a]{margin-top:10px}.entry[data-v-16758c8a]:first-of-type{margin-top:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-0c6c35c8]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vpc-topology[data-v-e05b3044]{display:flex;flex-direction:column;height:calc(100dvh - 220px);min-height:480px;width:100%;background:var(--body-bg);border-radius:4px;overflow:hidden}.vpc-topology .topology-header[data-v-e05b3044]{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.vpc-topology .topology-header .visibility-controls[data-v-e05b3044]{display:flex;gap:24px;align-items:center}.vpc-topology .topology-header .visibility-controls .control-item[data-v-e05b3044]{display:flex;align-items:center;cursor:pointer}.vpc-topology .topology-header .visibility-controls .control-item[data-v-e05b3044] .checkbox-label{display:flex;align-items:center;line-height:1}.vpc-topology .topology-header .visibility-controls .control-item .count-badge[data-v-e05b3044]{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:30px;font-size:12px;min-width:20px;height:20px;text-align:center;color:#fff;margin-left:8px;line-height:1}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-vpc[data-v-e05b3044]{background:var(--badge-vpc-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-subnet[data-v-e05b3044]{background:var(--badge-subnet-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-overlay[data-v-e05b3044]{background:var(--badge-overlay-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-vm[data-v-e05b3044]{background:var(--badge-vm-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.disabled[data-v-e05b3044]{opacity:.4}.vpc-topology .loading[data-v-e05b3044]{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;font-size:16px;color:var(--muted)}.vpc-topology .loading i[data-v-e05b3044]{margin-right:10px;font-size:20px}.vpc-topology .empty-state[data-v-e05b3044]{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:0;color:var(--muted)}.vpc-topology .empty-state i[data-v-e05b3044]{font-size:48px;margin-bottom:16px}.vpc-topology .empty-state p[data-v-e05b3044]{font-size:16px;margin:0}.vpc-topology .vpc-flow[data-v-e05b3044]{flex:1;min-height:0}.vpc-topology .vpc-flow.is-fitting[data-v-e05b3044]{opacity:0;pointer-events:none}.vpc-topology .vue-flow__node[data-v-e05b3044]{transition:all .5s cubic-bezier(.34,1.56,.64,1)}.vpc-topology[data-v-e05b3044] .handle-center{left:50%}.vpc-topology[data-v-e05b3044] .vue-flow__edge{transition:opacity .5s cubic-bezier(.4,0,.2,1),filter .5s cubic-bezier(.4,0,.2,1)}.vpc-topology[data-v-e05b3044] .vue-flow__edge path{transition:stroke-dasharray .4s ease}.vpc-topology[data-v-e05b3044] .vue-flow__edge.dimmed{opacity:.05!important;filter:grayscale(90%)}.vpc-topology[data-v-e05b3044] .vue-flow__edge.dimmed path{stroke-dasharray:5!important}.vpc-topology[data-v-e05b3044] .vue-flow__edge-text{font-size:14px}.vpc-topology .custom-node[data-v-e05b3044]{width:100%;padding:10px;font-size:13px;line-height:1.4;box-sizing:border-box;border-radius:12px;height:auto;transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .5s cubic-bezier(.4,0,.2,1),box-shadow .5s cubic-bezier(.4,0,.2,1),filter .5s cubic-bezier(.4,0,.2,1),background-color .5s cubic-bezier(.4,0,.2,1);opacity:1;box-shadow:0 1px 3px rgba(0,0,0,.1)}.vpc-topology .custom-node .node-header[data-v-e05b3044]{display:flex;align-items:center;margin-bottom:6px}.vpc-topology .custom-node .node-header .node-name[data-v-e05b3044]{margin-bottom:0}.vpc-topology .custom-node .status-indicator[data-v-e05b3044]{width:10px;height:10px;border-radius:50%;margin-right:8px;flex-shrink:0}.vpc-topology .custom-node .status-indicator.is-running[data-v-e05b3044]{background-color:var(--status-running-color);box-shadow:0 0 6px var(--status-running-glow)}.vpc-topology .custom-node .status-indicator.is-stopped[data-v-e05b3044]{background-color:var(--status-stopped-color)}.vpc-topology .custom-node .node-name[data-v-e05b3044]{font-weight:600;font-size:18px;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vpc-topology .custom-node .node-details[data-v-e05b3044]{font-size:14px}.vpc-topology .custom-node .interface-group[data-v-e05b3044]:not(:first-child){margin-top:6px;padding-top:6px;border-top:1px solid var(--node-vm-color)}.vpc-topology .custom-node.vpc-node[data-v-e05b3044]{text-align:center;border:2px solid var(--node-vpc-color);background-color:var(--node-vpc-bg)}.vpc-topology .custom-node.vpc-node .node-name[data-v-e05b3044]{margin-bottom:0}.vpc-topology .custom-node.peer-vpc[data-v-e05b3044]{border-color:var(--node-peer-vpc-color);background-color:var(--node-peer-vpc-bg);cursor:pointer}.vpc-topology .custom-node.peer-vpc[data-v-e05b3044]:hover{border-color:var(--node-vpc-color);box-shadow:0 6px 16px rgba(36,83,255,.18);transform:translateY(-2px)}.vpc-topology .custom-node .peer-badge[data-v-e05b3044]{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;font-size:11px;font-weight:600;margin-left:8px;background-color:var(--badge-peer-bg);color:var(--badge-peer-text)}.vpc-topology .custom-node.subnet-node[data-v-e05b3044]{border:2px solid var(--node-subnet-color);background-color:var(--node-subnet-bg)}.vpc-topology .custom-node.overlay-node[data-v-e05b3044]{border:2px dashed var(--node-overlay-color);background-color:var(--node-overlay-bg)}.vpc-topology .custom-node.vm-node[data-v-e05b3044]{border:2px solid var(--node-vm-color);background-color:var(--node-vm-bg)}.vpc-topology .custom-node.vm-node.stopped[data-v-e05b3044]{border:2px dashed var(--node-vm-stopped-color);background-color:var(--node-vm-stopped-bg)}.vpc-topology .custom-node.node-focused[data-v-e05b3044]{transform:scale(1.03) translateY(-4px);z-index:1000;opacity:1!important;box-shadow:0 15px 35px -5px rgba(0,0,0,.15),0 0 0 3px rgba(36,83,255,.15)}.vpc-topology .custom-node.node-related[data-v-e05b3044]{transform:scale(1.03);z-index:999;opacity:1!important;box-shadow:0 8px 20px -3px rgba(0,0,0,.08)}.vpc-topology .custom-node.node-dimmed[data-v-e05b3044]{opacity:.3;filter:grayscale(85%);transform:scale(.98)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".consoleBut[data-v-9ed3a482]{display:flex;justify-content:flex-end}.overview-basics[data-v-9ed3a482]{display:grid;grid-template-columns:100%;grid-template-rows:auto;grid-row-gap:15px}.overview-basics .badge-state[data-v-9ed3a482]{padding:2px 5px;font-size:12px;margin-right:3px}.overview-basics .smart-row[data-v-9ed3a482]{display:flex;flex-direction:row}.overview-basics .smart-row .console[data-v-9ed3a482]{display:flex;overflow:hidden}.overview-basics__name[data-v-9ed3a482]{flex:1}.overview-basics__ssh-key[data-v-9ed3a482]{min-width:150px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overview-sshKeys[data-v-67f09e09]{text-align:left;max-height:700px;overflow:auto}.overview-sshKeys__item[data-v-67f09e09]{margin-bottom:15px}.overview-sshKeys__item[data-v-67f09e09]:last-child{margin-bottom:0}.overview-sshKeys .key-display[data-v-67f09e09]{position:relative;padding-right:30px;word-break:break-word}.overview-sshKeys .key-display .hide-bar[data-v-67f09e09]{position:absolute;top:-10px;right:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./HarvesterHostBasic.vue?vue&type=template&id=bc500e7c&scoped=true\"\nimport script from \"./HarvesterHostBasic.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHostBasic.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterHostBasic.vue?vue&type=style&index=0&id=bc500e7c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bc500e7c\"]])\n\nexport default __exports__","\n\n\n \n \n \n\n\n","import { render } from \"./VirtualMachineInstance.vue?vue&type=template&id=d605095e&scoped=true\"\nimport script from \"./VirtualMachineInstance.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineInstance.vue?vue&type=script&lang=js\"\n\nimport \"./VirtualMachineInstance.vue?vue&type=style&index=0&id=d605095e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d605095e\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n \n \n \n {{ prop }}\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n
\n {{ t('harvester.host.disk.conditions') }}:\n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n\n\n","import { render } from \"./HarvesterHostDisk.vue?vue&type=template&id=2f2890f0&scoped=true\"\nimport script from \"./HarvesterHostDisk.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHostDisk.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterHostDisk.vue?vue&type=style&index=0&id=2f2890f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2f2890f0\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t('resourceTabs.conditions.tab') }}:\n \n
\n
\n
\n
\n
\n
\n \n","\n\n\n \n
\n
\n
\n
\n \n \n {{ value.promiscuous === 'true' ? t('generic.yes') : t('generic.no') }}\n \n \n
\n
\n
\n \n","import { render } from \"./LinkStatus.vue?vue&type=template&id=464d8096\"\nimport script from \"./LinkStatus.vue?vue&type=script&lang=js\"\nexport * from \"./LinkStatus.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=0daa1cf5\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ t('harvester.host.ksmtuned.configure') }}\n \n \n\n \n
\n \n
\n
\n \n
\n\n
\n \n
\n
\n\n \n
\n\n
{{ t('harvester.host.ksmtuned.parameters.title') }} \n
\n
\n \n
\n
\n \n
\n\n
\n \n
\n
\n\n
\n
\n\n \n
\n
\n \n \n
\n
\n \n \n {{ ksmdPhase }} \n \n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n\n
\n
\n \n
\n \n","import { render } from \"./HarvesterKsmtuned.vue?vue&type=template&id=759a21a0\"\nimport script from \"./HarvesterKsmtuned.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterKsmtuned.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.host.hugepages.meminfo') }} \n\n \n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n \n
\n
\n \n \n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n \n","import { render } from \"./HarvesterHugepages.vue?vue&type=template&id=f842cf10\"\nimport script from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./HarvesterSeeder.vue?vue&type=template&id=e3661a34\"\nimport script from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=12c23ff2\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n\n \n \n {{ registrationURL }}\n \n \n \n \n","import { render } from \"./harvesterhci.io.management.cluster.vue?vue&type=template&id=66a38698\"\nimport script from \"./harvesterhci.io.management.cluster.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.management.cluster.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","\n\n\n \n \n \n \n \n {{ row.nameDisplay }}\n \n \n {{ row.nameDisplay }}\n \n \n \n \n \n \n","import { render } from \"./BackupList.vue?vue&type=template&id=7bb13e16\"\nimport script from \"./BackupList.vue?vue&type=script&lang=js\"\nexport * from \"./BackupList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n {{ row.nameDisplay }}\n \n \n {{ row.nameDisplay }}\n \n \n \n \n \n \n","import { render } from \"./SnapshotList.vue?vue&type=template&id=56e72150\"\nimport script from \"./SnapshotList.vue?vue&type=script&lang=js\"\nexport * from \"./SnapshotList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=2347e8b7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2347e8b7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2347e8b7\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n \n\n \n\n \n\n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.secret.vue?vue&type=template&id=16758c8a&scoped=true\"\nimport script from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.secret.vue?vue&type=style&index=0&id=16758c8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-16758c8a\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n\n \n \n \n
\n \n
\n
\n \n \n
\n \n {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})\n \n \n
\n \n \n
\n
\n
\n \n \n
0\">\n \n {{ rom.name }}\n \n \n
\n {{ t(\"harvester.virtualMachine.detail.notAvailable\") }}\n \n
\n \n \n
\n
\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n\n
\n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=728b90de\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n
\n
\n
\n \n \n \n
\n \n {{ url }}\n
\n \n \n
\n
\n\n \n\n \n\n \n\n \n\n \n
\n
\n {{ t('harvester.image.encryptionSecret') }}\n
\n
\n {{ encryptionSecret }}\n \n
\n {{ encryptionSecret }}\n \n
\n —\n \n
\n
\n\n \n
\n
\n {{ t('harvester.image.sourceImage') }}\n
\n
\n {{ sourceImageId }}\n \n
\n {{ sourceImageId }}\n \n
\n —\n \n
\n
\n\n \n\n \n
\n
\n {{ t('tableHeaders.message') }}\n
\n
\n {{ errorMessage }}\n
\n
\n
\n \n \n \n \n \n \n\n\n","\n\n\n \n \n","import { render } from \"./Storage.vue?vue&type=template&id=f2a31958\"\nimport script from \"./Storage.vue?vue&type=script&lang=js\"\nexport * from \"./Storage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=0c6c35c8&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0c6c35c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c6c35c8\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n\n \n\n \n\n \n
\n
\n \n \n
\n \n {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})\n \n \n
\n \n \n
\n
\n
\n \n \n
0\">\n \n {{ rom.name }}\n \n \n
\n {{ t(\"harvester.virtualMachine.detail.notAvailable\") }}\n \n
\n \n \n
\n
\n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n\n
\n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=43393560\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n
\n \n {{ t(\"harvester.vpc.topology.loading\") }}\n
\n
\n
\n
{{ t(\"harvester.vpc.topology.empty\") }}
\n
\n\n
\n \n \n \n \n \n
\n {{ data.name }}\n {{ t(\"harvester.vpc.topology.labels.peering\") }} \n
\n
\n \n\n \n\n \n \n \n \n
\n {{ data.name }}\n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.cidr\") }}: {{ data.cidr }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.provider\") }}:\n {{ data.provider }}\n
\n
\n
\n \n\n \n \n \n \n
\n {{ data.name }}\n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.type\") }}: {{ data.nadType }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.clusterNetwork\") }}:\n {{ data.clusterNetwork }}\n
\n
\n
\n \n\n \n \n \n \n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.subnet\") }}:\n {{ iface.subnet }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.network\") }}:\n {{ iface.network }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.ip\") }}: {{ iface.ip }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.mac\") }}: {{ iface.mac }}\n
\n
\n
\n
\n \n\n \n \n \n \n
\n
\n
\n {{ t(\"harvester.vpc.topology.labels.subnet\") }}:\n {{ iface.subnet }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.network\") }}:\n {{ iface.network }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.ip\") }}: {{ iface.ip }}\n
\n
\n {{ t(\"harvester.vpc.topology.labels.mac\") }}: {{ iface.mac }}\n
\n
\n
\n
\n \n\n \n \n \n
\n \n\n\n","import { render } from \"./kubeovn.io.vpc.vue?vue&type=template&id=e05b3044&scoped=true\"\nimport script from \"./kubeovn.io.vpc.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.vpc.vue?vue&type=script&lang=js\"\n\nimport \"./kubeovn.io.vpc.vue?vue&type=style&index=0&id=e05b3044&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e05b3044\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n {{ ssh.id }}\n
\n
\n
\n {{ ssh.publicKey }}\n \n \n \n
\n
\n ******* \n \n
\n
\n
\n \n\n\n","import { render } from \"./VirtualMachineKeypairs.vue?vue&type=template&id=67f09e09&scoped=true\"\nimport script from \"./VirtualMachineKeypairs.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineKeypairs.vue?vue&type=script&lang=js\"\n\nimport \"./VirtualMachineKeypairs.vue?vue&type=style&index=0&id=67f09e09&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-67f09e09\"]])\n\nexport default __exports__","\n\n\n \n
\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n \n","\n\n\n \n \n \n {{ value }}\n
\n \n {{ row.displayMessage }}\n
\n \n \n \n","import { render } from \"./VirtualMachineEvents.vue?vue&type=template&id=1d2655fa\"\nimport script from \"./VirtualMachineEvents.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineEvents.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./VirtualMachineMigration.vue?vue&type=template&id=71a24c48\"\nimport script from \"./VirtualMachineMigration.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineMigration.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n \n \n
\n {{ value.nameDisplay }}\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n
\n
\n \n \n {{ hostname }}\n
\n \n \n
\n\n
\n
\n \n \n {{ node }}\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n \n
\n\n
\n \n
\n
\n\n
\n\n
{{ t('harvester.virtualMachine.detail.tabs.configurations') }} \n\n
\n
\n
\n \n \n \n {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})\n \n \n \n \n
\n
\n
\n \n \n
0\">\n \n {{ rom.name }}\n \n \n
\n {{ t(\"harvester.virtualMachine.detail.notAvailable\") }}\n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n\n\n","import { render } from \"./VirtualMachineBasics.vue?vue&type=template&id=9ed3a482&scoped=true\"\nimport script from \"./VirtualMachineBasics.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineBasics.vue?vue&type=script&lang=js\"\n\nimport \"./VirtualMachineBasics.vue?vue&type=style&index=0&id=9ed3a482&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9ed3a482\"]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=5f408a0d\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n","import { render } from \"./loadbalancer.harvesterhci.io.ippool.vue?vue&type=template&id=623c120b\"\nimport script from \"./loadbalancer.harvesterhci.io.ippool.vue?vue&type=script&lang=js\"\nexport * from \"./loadbalancer.harvesterhci.io.ippool.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n 10 ? true : false\"\n />\n \n \n \n \n \n \n \n \n \n","import { render } from \"./loadbalancer.harvesterhci.io.loadbalancer.vue?vue&type=template&id=5dd05171\"\nimport script from \"./loadbalancer.harvesterhci.io.loadbalancer.vue?vue&type=script&lang=js\"\nexport * from \"./loadbalancer.harvesterhci.io.loadbalancer.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n","import { render } from \"./network.harvesterhci.io.vlanconfig.vue?vue&type=template&id=3ff8fe62\"\nimport script from \"./network.harvesterhci.io.vlanconfig.vue?vue&type=script&lang=js\"\nexport * from \"./network.harvesterhci.io.vlanconfig.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".role[data-v-bc500e7c]{display:flex}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".close[data-v-2f2890f0]{top:10px;right:10px;padding:0;position:absolute}.disk[data-v-2f2890f0]{position:relative}.disk .secret-name[data-v-2f2890f0]{height:61px}.disk[data-v-2f2890f0]:not(:last-of-type){padding-bottom:10px;margin-bottom:30px}.flex[data-v-2f2890f0]{display:flex;justify-content:space-between}.badge-state[data-v-2f2890f0]{padding:2px 5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#host-instances[data-v-d605095e] thead th{vertical-align:middle}#host-instances[data-v-d605095e] .state{display:flex}#host-instances[data-v-d605095e] .state .vmstate{margin-right:6px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-2347e8b7]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".entry[data-v-16758c8a]{margin-top:10px}.entry[data-v-16758c8a]:first-of-type{margin-top:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-0c6c35c8]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vpc-topology[data-v-e05b3044]{display:flex;flex-direction:column;height:calc(100dvh - 220px);min-height:480px;width:100%;background:var(--body-bg);border-radius:4px;overflow:hidden}.vpc-topology .topology-header[data-v-e05b3044]{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.vpc-topology .topology-header .visibility-controls[data-v-e05b3044]{display:flex;gap:24px;align-items:center}.vpc-topology .topology-header .visibility-controls .control-item[data-v-e05b3044]{display:flex;align-items:center;cursor:pointer}.vpc-topology .topology-header .visibility-controls .control-item[data-v-e05b3044] .checkbox-label{display:flex;align-items:center;line-height:1}.vpc-topology .topology-header .visibility-controls .control-item .count-badge[data-v-e05b3044]{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:30px;font-size:12px;min-width:20px;height:20px;text-align:center;color:#fff;margin-left:8px;line-height:1}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-vpc[data-v-e05b3044]{background:var(--badge-vpc-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-subnet[data-v-e05b3044]{background:var(--badge-subnet-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-overlay[data-v-e05b3044]{background:var(--badge-overlay-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.badge-vm[data-v-e05b3044]{background:var(--badge-vm-bg)}.vpc-topology .topology-header .visibility-controls .control-item .count-badge.disabled[data-v-e05b3044]{opacity:.4}.vpc-topology .loading[data-v-e05b3044]{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;font-size:16px;color:var(--muted)}.vpc-topology .loading i[data-v-e05b3044]{margin-right:10px;font-size:20px}.vpc-topology .empty-state[data-v-e05b3044]{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:0;color:var(--muted)}.vpc-topology .empty-state i[data-v-e05b3044]{font-size:48px;margin-bottom:16px}.vpc-topology .empty-state p[data-v-e05b3044]{font-size:16px;margin:0}.vpc-topology .vpc-flow[data-v-e05b3044]{flex:1;min-height:0}.vpc-topology .vpc-flow.is-fitting[data-v-e05b3044]{opacity:0;pointer-events:none}.vpc-topology .vue-flow__node[data-v-e05b3044]{transition:all .5s cubic-bezier(.34,1.56,.64,1)}.vpc-topology[data-v-e05b3044] .handle-center{left:50%}.vpc-topology[data-v-e05b3044] .vue-flow__edge{transition:opacity .5s cubic-bezier(.4,0,.2,1),filter .5s cubic-bezier(.4,0,.2,1)}.vpc-topology[data-v-e05b3044] .vue-flow__edge path{transition:stroke-dasharray .4s ease}.vpc-topology[data-v-e05b3044] .vue-flow__edge.dimmed{opacity:.05!important;filter:grayscale(90%)}.vpc-topology[data-v-e05b3044] .vue-flow__edge.dimmed path{stroke-dasharray:5!important}.vpc-topology[data-v-e05b3044] .vue-flow__edge-text{font-size:14px}.vpc-topology .custom-node[data-v-e05b3044]{width:100%;padding:10px;font-size:13px;line-height:1.4;box-sizing:border-box;border-radius:12px;height:auto;transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .5s cubic-bezier(.4,0,.2,1),box-shadow .5s cubic-bezier(.4,0,.2,1),filter .5s cubic-bezier(.4,0,.2,1),background-color .5s cubic-bezier(.4,0,.2,1);opacity:1;box-shadow:0 1px 3px rgba(0,0,0,.1)}.vpc-topology .custom-node .node-header[data-v-e05b3044]{display:flex;align-items:center;margin-bottom:6px}.vpc-topology .custom-node .node-header .node-name[data-v-e05b3044]{margin-bottom:0}.vpc-topology .custom-node .status-indicator[data-v-e05b3044]{width:10px;height:10px;border-radius:50%;margin-right:8px;flex-shrink:0}.vpc-topology .custom-node .status-indicator.is-running[data-v-e05b3044]{background-color:var(--status-running-color);box-shadow:0 0 6px var(--status-running-glow)}.vpc-topology .custom-node .status-indicator.is-stopped[data-v-e05b3044]{background-color:var(--status-stopped-color)}.vpc-topology .custom-node .node-name[data-v-e05b3044]{font-weight:600;font-size:18px;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vpc-topology .custom-node .node-details[data-v-e05b3044]{font-size:14px}.vpc-topology .custom-node .interface-group[data-v-e05b3044]:not(:first-child){margin-top:6px;padding-top:6px;border-top:1px solid var(--node-vm-color)}.vpc-topology .custom-node.vpc-node[data-v-e05b3044]{text-align:center;border:2px solid var(--node-vpc-color);background-color:var(--node-vpc-bg)}.vpc-topology .custom-node.vpc-node .node-name[data-v-e05b3044]{margin-bottom:0}.vpc-topology .custom-node.peer-vpc[data-v-e05b3044]{border-color:var(--node-peer-vpc-color);background-color:var(--node-peer-vpc-bg);cursor:pointer}.vpc-topology .custom-node.peer-vpc[data-v-e05b3044]:hover{border-color:var(--node-vpc-color);box-shadow:0 6px 16px rgba(36,83,255,.18);transform:translateY(-2px)}.vpc-topology .custom-node .peer-badge[data-v-e05b3044]{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;font-size:11px;font-weight:600;margin-left:8px;background-color:var(--badge-peer-bg);color:var(--badge-peer-text)}.vpc-topology .custom-node.subnet-node[data-v-e05b3044]{border:2px solid var(--node-subnet-color);background-color:var(--node-subnet-bg)}.vpc-topology .custom-node.overlay-node[data-v-e05b3044]{border:2px dashed var(--node-overlay-color);background-color:var(--node-overlay-bg)}.vpc-topology .custom-node.vm-node[data-v-e05b3044]{border:2px solid var(--node-vm-color);background-color:var(--node-vm-bg)}.vpc-topology .custom-node.vm-node.stopped[data-v-e05b3044]{border:2px dashed var(--node-vm-stopped-color);background-color:var(--node-vm-stopped-bg)}.vpc-topology .custom-node.node-focused[data-v-e05b3044]{transform:scale(1.03) translateY(-4px);z-index:1000;opacity:1!important;box-shadow:0 15px 35px -5px rgba(0,0,0,.15),0 0 0 3px rgba(36,83,255,.15)}.vpc-topology .custom-node.node-related[data-v-e05b3044]{transform:scale(1.03);z-index:999;opacity:1!important;box-shadow:0 8px 20px -3px rgba(0,0,0,.08)}.vpc-topology .custom-node.node-dimmed[data-v-e05b3044]{opacity:.3;filter:grayscale(85%);transform:scale(.98)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".consoleBut[data-v-9ed3a482]{display:flex;justify-content:flex-end}.overview-basics[data-v-9ed3a482]{display:grid;grid-template-columns:100%;grid-template-rows:auto;grid-row-gap:15px}.overview-basics .badge-state[data-v-9ed3a482]{padding:2px 5px;font-size:12px;margin-right:3px}.overview-basics .smart-row[data-v-9ed3a482]{display:flex;flex-direction:row}.overview-basics .smart-row .console[data-v-9ed3a482]{display:flex;overflow:hidden}.overview-basics__name[data-v-9ed3a482]{flex:1}.overview-basics__ssh-key[data-v-9ed3a482]{min-width:150px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overview-sshKeys[data-v-67f09e09]{text-align:left;max-height:700px;overflow:auto}.overview-sshKeys__item[data-v-67f09e09]{margin-bottom:15px}.overview-sshKeys__item[data-v-67f09e09]:last-child{margin-bottom:0}.overview-sshKeys .key-display[data-v-67f09e09]{position:relative;padding-right:30px;word-break:break-word}.overview-sshKeys .key-display .hide-bar[data-v-67f09e09]{position:absolute;top:-10px;right:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./CopyToClipboardText.vue?vue&type=template&id=037ba460&scoped=true\"\nimport script from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\nexport * from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\n\nimport \"./CopyToClipboardText.vue?vue&type=style&index=0&id=037ba460&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-037ba460\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.cloneVM.title') }}\n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./CloneVmDialog.vue?vue&type=template&id=283398c6&scoped=true\"\nimport script from \"./CloneVmDialog.vue?vue&type=script&lang=js\"\nexport * from \"./CloneVmDialog.vue?vue&type=script&lang=js\"\n\nimport \"./CloneVmDialog.vue?vue&type=style&index=0&id=283398c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-283398c6\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t('dialog.confirmExecution.title') }}\n \n \n\n \n \n
\n
\n {{ protip }}\n
\n
\n
\n \n\n \n \n
\n {{ t('generic.cancel') }}\n \n
\n
\n \n \n \n\n\n","import { render } from \"./ConfirmExecutionDialog.vue?vue&type=template&id=f1be4b1c&scoped=true\"\nimport script from \"./ConfirmExecutionDialog.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmExecutionDialog.vue?vue&type=script&lang=js\"\n\nimport \"./ConfirmExecutionDialog.vue?vue&type=style&index=0&id=f1be4b1c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f1be4b1c\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t(title, { type }, true) }}\n \n \n\n \n \n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n {{ protip }}\n
\n
\n
\n
\n \n\n \n \n {{ t('generic.cancel') }}\n \n \n \n \n \n\n\n","import { render } from \"./ConfirmRelatedToRemoveDialog.vue?vue&type=template&id=49664b68&scoped=true\"\nimport script from \"./ConfirmRelatedToRemoveDialog.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmRelatedToRemoveDialog.vue?vue&type=script&lang=js\"\n\nimport \"./ConfirmRelatedToRemoveDialog.vue?vue&type=style&index=0&id=49664b68&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49664b68\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n {{ t('harvester.pci.enablePassthroughWarning') }}\n
\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnablePciPassthrough.vue?vue&type=template&id=6a7019d1&scoped=true\"\nimport script from \"./EnablePciPassthrough.vue?vue&type=script&lang=js\"\nexport * from \"./EnablePciPassthrough.vue?vue&type=script&lang=js\"\n\nimport \"./EnablePciPassthrough.vue?vue&type=style&index=0&id=6a7019d1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a7019d1\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnableSriovDevice.vue?vue&type=template&id=bcaa7c4a&scoped=true\"\nimport script from \"./EnableSriovDevice.vue?vue&type=script&lang=js\"\nexport * from \"./EnableSriovDevice.vue?vue&type=script&lang=js\"\n\nimport \"./EnableSriovDevice.vue?vue&type=style&index=0&id=bcaa7c4a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bcaa7c4a\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnableUSBPassthrough.vue?vue&type=template&id=615f4873&scoped=true\"\nimport script from \"./EnableUSBPassthrough.vue?vue&type=script&lang=js\"\nexport * from \"./EnableUSBPassthrough.vue?vue&type=script&lang=js\"\n\nimport \"./EnableUSBPassthrough.vue?vue&type=style&index=0&id=615f4873&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-615f4873\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnableVGpuDevice.vue?vue&type=template&id=093a01ba&scoped=true\"\nimport script from \"./EnableVGpuDevice.vue?vue&type=script&lang=js\"\nexport * from \"./EnableVGpuDevice.vue?vue&type=script&lang=js\"\n\nimport \"./EnableVGpuDevice.vue?vue&type=style&index=0&id=093a01ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-093a01ba\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterAddHotplugNic.vue?vue&type=template&id=79803d95&scoped=true\"\nimport script from \"./HarvesterAddHotplugNic.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterAddHotplugNic.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterAddHotplugNic.vue?vue&type=style&index=0&id=79803d95&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-79803d95\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterAddHotplugVolumeModal.vue?vue&type=template&id=a51e9070&scoped=true\"\nimport script from \"./HarvesterAddHotplugVolumeModal.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterAddHotplugVolumeModal.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterAddHotplugVolumeModal.vue?vue&type=style&index=0&id=a51e9070&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a51e9070\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterBackupModal.vue?vue&type=template&id=06d85439&scoped=true\"\nimport script from \"./HarvesterBackupModal.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBackupModal.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterBackupModal.vue?vue&type=style&index=0&id=06d85439&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-06d85439\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=template&id=666432c0&scoped=true\"\nimport script from \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=style&index=0&id=666432c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-666432c0\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.createTemplate.title') }}\n \n\n \n \n\n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterCloneTemplate.vue?vue&type=template&id=528148c0&scoped=true\"\nimport script from \"./HarvesterCloneTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCloneTemplate.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterCloneTemplate.vue?vue&type=style&index=0&id=528148c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-528148c0\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.dataMigration.title') }}\n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterDataMigrationDialog.vue?vue&type=template&id=376027ee&scoped=true\"\nimport script from \"./HarvesterDataMigrationDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterDataMigrationDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterDataMigrationDialog.vue?vue&type=style&index=0&id=376027ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-376027ee\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.ejectCDROM.title') }}\n \n\n \n \n {{ t('harvester.modal.ejectCDROM.operationTip') }}\n \n\n \n \n
\n\n \n {{ t('harvester.modal.ejectCDROM.warnTip') }} \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterEjectCDROMDialog.vue?vue&type=template&id=1730b7fd&scoped=true\"\nimport script from \"./HarvesterEjectCDROMDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterEjectCDROMDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterEjectCDROMDialog.vue?vue&type=style&index=0&id=1730b7fd&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1730b7fd\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=template&id=a0ccbf02&scoped=true\"\nimport script from \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=style&index=0&id=a0ccbf02&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a0ccbf02\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.exportImage.title') }}\n \n\n \n \n\n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterExportImageDialog.vue?vue&type=template&id=aaa5e7e6&scoped=true\"\nimport script from \"./HarvesterExportImageDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterExportImageDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterExportImageDialog.vue?vue&type=style&index=0&id=aaa5e7e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aaa5e7e6\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterHotUnplug.vue?vue&type=template&id=6ef40bb9&scoped=true\"\nimport script from \"./HarvesterHotUnplug.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHotUnplug.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterHotUnplug.vue?vue&type=style&index=0&id=6ef40bb9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6ef40bb9\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t('harvester.modal.downloadImage.title') }}\n \n\n \n \n {{ t('harvester.modal.downloadImage.banner', { size: imageVirtualSize }) }}\n \n {{ t('harvester.modal.downloadImage.startMessage') }}\n \n \n \n\n \n \n \n \n \n \n\n\n","import { render } from \"./HarvesterImageDownloader.vue?vue&type=template&id=b1684a9e&scoped=true\"\nimport script from \"./HarvesterImageDownloader.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterImageDownloader.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterImageDownloader.vue?vue&type=style&index=0&id=b1684a9e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b1684a9e\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterInsertCdRomVolume.vue?vue&type=template&id=088199f1&scoped=true\"\nimport script from \"./HarvesterInsertCdRomVolume.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterInsertCdRomVolume.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterInsertCdRomVolume.vue?vue&type=style&index=0&id=088199f1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-088199f1\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.host.enableMaintenance.title') }}\n \n\n \n \n \n
\n\n \n\n \n\n \n\n \n
\n \n {{ ucFirst(unhealthyVM.message) }}\n
\n \n\n
\n \n
\n
\n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterMaintenanceDialog.vue?vue&type=template&id=f2cea8a0&scoped=true\"\nimport script from \"./HarvesterMaintenanceDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterMaintenanceDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterMaintenanceDialog.vue?vue&type=style&index=0&id=f2cea8a0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f2cea8a0\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.migration.vmMigrationTitle', { count: resources.length }) }}\n \n\n \n \n \n {{ t('harvester.modal.migration.selectedVMs') }}\n
\n \n \n {{ group.node || t('harvester.modal.migration.unknownNode') }}: {{ group.vms.join(', ') }}\n \n ({{ t('harvester.modal.migration.alreadyOnTarget') }})\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterMigrationDialog.vue?vue&type=template&id=0c57f006&scoped=true\"\nimport script from \"./HarvesterMigrationDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterMigrationDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterMigrationDialog.vue?vue&type=style&index=0&id=0c57f006&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c57f006\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n {{ t('harvester.modal.quota.bannerMessage') }}\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterQuotaDialog.vue?vue&type=template&id=c0ceac3e&scoped=true\"\nimport script from \"./HarvesterQuotaDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterQuotaDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterQuotaDialog.vue?vue&type=style&index=0&id=c0ceac3e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c0ceac3e\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.restore.title') }}\n \n\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterRestoreDialog.vue?vue&type=template&id=5004de14&scoped=true\"\nimport script from \"./HarvesterRestoreDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterRestoreDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterRestoreDialog.vue?vue&type=style&index=0&id=5004de14&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5004de14\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.storageMigration.title') }}\n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterStorageMigrationDialog.vue?vue&type=template&id=31b4bafc&scoped=true\"\nimport script from \"./HarvesterStorageMigrationDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterStorageMigrationDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterStorageMigrationDialog.vue?vue&type=style&index=0&id=31b4bafc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-31b4bafc\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterVMSnapshotDialog.vue?vue&type=template&id=098bab72&scoped=true\"\nimport script from \"./HarvesterVMSnapshotDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVMSnapshotDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVMSnapshotDialog.vue?vue&type=style&index=0&id=098bab72&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-098bab72\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.migration.title') }}\n \n\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=template&id=594fe51d&scoped=true\"\nimport script from \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=style&index=0&id=594fe51d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-594fe51d\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t('generic.tip') }}\n \n \n\n \n
\n \n\n \n \n
\n \n {{ t('generic.ok') }}\n \n
\n
\n \n \n \n\n\n","import { render } from \"./MessageBox.vue?vue&type=template&id=6bf42877&scoped=true\"\nimport script from \"./MessageBox.vue?vue&type=script&lang=js\"\nexport * from \"./MessageBox.vue?vue&type=script&lang=js\"\n\nimport \"./MessageBox.vue?vue&type=style&index=0&id=6bf42877&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6bf42877\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n
\n \n \n\n \n \n \n \n \n \n\n","import { render } from \"./RestartVMDialog.vue?vue&type=template&id=0f53a5eb&scoped=true\"\nimport script from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\nexport * from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\n\nimport \"./RestartVMDialog.vue?vue&type=style&index=0&id=0f53a5eb&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f53a5eb\"]])\n\nexport default __exports__","\n\n \n \n {{ t('harvester.modal.restoreSnapshot.title') }}\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n","import { render } from \"./RestoreSnapshotDialog.vue?vue&type=template&id=01a80ef0&scoped=true\"\nimport script from \"./RestoreSnapshotDialog.vue?vue&type=script&lang=js\"\nexport * from \"./RestoreSnapshotDialog.vue?vue&type=script&lang=js\"\n\nimport \"./RestoreSnapshotDialog.vue?vue&type=style&index=0&id=01a80ef0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-01a80ef0\"]])\n\nexport default __exports__","\n\n \n \n {{ t('harvester.modal.snapshot.title') }}\n \n\n \n \n \n \n\n \n \n \n \n \n\n","import { render } from \"./SnapshotDialog.vue?vue&type=template&id=b3c709f8&scoped=true\"\nimport script from \"./SnapshotDialog.vue?vue&type=script&lang=js\"\nexport * from \"./SnapshotDialog.vue?vue&type=script&lang=js\"\n\nimport \"./SnapshotDialog.vue?vue&type=style&index=0&id=b3c709f8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b3c709f8\"]])\n\nexport default __exports__","\n\n \n \n {{ t('harvester.modal.volumeClone.title') }}\n \n\n \n \n\n \n \n \n\n \n \n \n \n \n\n","import { render } from \"./VolumeCloneDialog.vue?vue&type=template&id=3892872e&scoped=true\"\nimport script from \"./VolumeCloneDialog.vue?vue&type=script&lang=js\"\nexport * from \"./VolumeCloneDialog.vue?vue&type=script&lang=js\"\n\nimport \"./VolumeCloneDialog.vue?vue&type=style&index=0&id=3892872e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3892872e\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".copy-to-clipboard-text[data-v-037ba460]{white-space:nowrap}.copy-to-clipboard-text.plain[data-v-037ba460]{color:var(--body-text)}.copy-to-clipboard-text.plain[data-v-037ba460]:hover{text-decoration:none}.copy-to-clipboard-text[data-v-037ba460]:active{color:var(--primary-keyboard-focus)}.copy-to-clipboard-text.copied[data-v-037ba460]{pointer-events:none;color:var(--success)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-283398c6],.buttons[data-v-283398c6]{width:100%}.buttons[data-v-283398c6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal-container[data-v-f1be4b1c]{max-width:400px}.actions[data-v-f1be4b1c]{width:100%;text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-49664b68]{text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-6a7019d1],.buttons[data-v-6a7019d1]{width:100%}.buttons[data-v-6a7019d1]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-bcaa7c4a],.buttons[data-v-bcaa7c4a]{width:100%}.buttons[data-v-bcaa7c4a]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-615f4873],.buttons[data-v-615f4873]{width:100%}.buttons[data-v-615f4873]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body[data-v-093a01ba]{display:flex;flex-direction:column}.body-field[data-v-093a01ba]{margin-top:10px}.actions[data-v-093a01ba],.buttons[data-v-093a01ba]{width:100%}.buttons[data-v-093a01ba]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-79803d95],.buttons[data-v-79803d95]{width:100%}.buttons[data-v-79803d95]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-a51e9070],.buttons[data-v-a51e9070]{width:100%}.buttons[data-v-a51e9070]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-06d85439],.buttons[data-v-06d85439]{width:100%}.buttons[data-v-06d85439]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-666432c0],.buttons[data-v-666432c0]{width:100%}.buttons[data-v-666432c0]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-528148c0],.buttons[data-v-528148c0]{width:100%}.buttons[data-v-528148c0]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-376027ee],.buttons[data-v-376027ee]{width:100%}.buttons[data-v-376027ee]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-1730b7fd],.buttons[data-v-1730b7fd]{width:100%}.buttons[data-v-1730b7fd]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body[data-v-a0ccbf02]{display:flex;flex-direction:column;min-width:400px}.actions[data-v-a0ccbf02],.buttons[data-v-a0ccbf02]{width:100%}.buttons[data-v-a0ccbf02]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-aaa5e7e6],.buttons[data-v-aaa5e7e6]{width:100%}.buttons[data-v-aaa5e7e6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-6ef40bb9],.buttons[data-v-6ef40bb9]{width:100%}.buttons[data-v-6ef40bb9]{display:flex;justify-content:flex-end}[data-v-6ef40bb9] .card-title{display:block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-b1684a9e],.buttons[data-v-b1684a9e]{width:100%}.buttons[data-v-b1684a9e]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-088199f1],.buttons[data-v-088199f1]{width:100%}.buttons[data-v-088199f1]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-f2cea8a0]{width:100%}.vm-list[data-v-f2cea8a0]{display:flex;flex-wrap:wrap}.buttons[data-v-f2cea8a0]{display:flex;justify-content:flex-end;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-0c57f006],.buttons[data-v-0c57f006]{width:100%}.buttons[data-v-0c57f006]{display:flex;justify-content:flex-end}.already-on-target[data-v-0c57f006]{color:var(--warning);font-style:italic}.vm-list[data-v-0c57f006]{list-style:disc;padding-left:1.5em;margin-bottom:10px;margin-top:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-c0ceac3e],.buttons[data-v-c0ceac3e]{width:100%}.buttons[data-v-c0ceac3e]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-5004de14],.buttons[data-v-5004de14]{width:100%}.buttons[data-v-5004de14]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-31b4bafc],.buttons[data-v-31b4bafc]{width:100%}.buttons[data-v-31b4bafc]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-098bab72],.buttons[data-v-098bab72]{width:100%}.buttons[data-v-098bab72]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-594fe51d],.buttons[data-v-594fe51d]{width:100%}.buttons[data-v-594fe51d]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-6bf42877],.buttons[data-v-6bf42877]{width:100%}.buttons[data-v-6bf42877]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".restart-modal[data-v-0f53a5eb]{z-index:45}.prompt-restart[data-v-0f53a5eb]{margin:0}.bottom[data-v-0f53a5eb]{display:flex;flex-direction:column;flex:1}.bottom .banner[data-v-0f53a5eb]{margin-top:0}.bottom .buttons[data-v-0f53a5eb]{display:flex;justify-content:flex-end;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-01a80ef0],.buttons[data-v-01a80ef0]{width:100%}.buttons[data-v-01a80ef0]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-b3c709f8],.buttons[data-v-b3c709f8]{width:100%}.buttons[data-v-b3c709f8]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-3892872e],.buttons[data-v-3892872e]{width:100%}.buttons[data-v-3892872e]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","export const DEFAULT_FS_FREEZE_DEADLINE = '1s';\n\n/**\n * Generate filesystem freeze deadline options with i18n translations\n * @param {Function} t - i18n translation function\n * @returns {Array} Array of deadline options\n */\nexport function getFsFreezeDeadlineOptions(t) {\n return [\n {\n label: t('generic.duration.infinite'),\n value: '0s'\n },\n {\n label: t('generic.duration.1s'),\n value: '1s'\n },\n {\n label: t('generic.duration.5s'),\n value: '5s'\n },\n {\n label: t('generic.duration.10s'),\n value: '10s'\n },\n {\n label: t('generic.duration.30s'),\n value: '30s'\n },\n {\n label: t('generic.duration.1m'),\n value: '1m'\n },\n {\n label: t('generic.duration.3m'),\n value: '3m'\n },\n {\n label: t('generic.duration.5m'),\n value: '5m'\n }\n ];\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./CopyToClipboardText.vue?vue&type=template&id=037ba460&scoped=true\"\nimport script from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\nexport * from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\n\nimport \"./CopyToClipboardText.vue?vue&type=style&index=0&id=037ba460&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-037ba460\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.cloneVM.title') }}\n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./CloneVmDialog.vue?vue&type=template&id=283398c6&scoped=true\"\nimport script from \"./CloneVmDialog.vue?vue&type=script&lang=js\"\nexport * from \"./CloneVmDialog.vue?vue&type=script&lang=js\"\n\nimport \"./CloneVmDialog.vue?vue&type=style&index=0&id=283398c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-283398c6\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t('dialog.confirmExecution.title') }}\n \n \n\n \n \n
\n
\n {{ protip }}\n
\n
\n
\n \n\n \n \n
\n {{ t('generic.cancel') }}\n \n
\n
\n \n \n \n\n\n","import { render } from \"./ConfirmExecutionDialog.vue?vue&type=template&id=f1be4b1c&scoped=true\"\nimport script from \"./ConfirmExecutionDialog.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmExecutionDialog.vue?vue&type=script&lang=js\"\n\nimport \"./ConfirmExecutionDialog.vue?vue&type=style&index=0&id=f1be4b1c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f1be4b1c\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t(title, { type }, true) }}\n \n \n\n \n \n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n {{ protip }}\n
\n
\n
\n
\n \n\n \n \n {{ t('generic.cancel') }}\n \n \n \n \n \n\n\n","import { render } from \"./ConfirmRelatedToRemoveDialog.vue?vue&type=template&id=49664b68&scoped=true\"\nimport script from \"./ConfirmRelatedToRemoveDialog.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmRelatedToRemoveDialog.vue?vue&type=script&lang=js\"\n\nimport \"./ConfirmRelatedToRemoveDialog.vue?vue&type=style&index=0&id=49664b68&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49664b68\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n {{ t('harvester.pci.enablePassthroughWarning') }}\n
\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnablePciPassthrough.vue?vue&type=template&id=6a7019d1&scoped=true\"\nimport script from \"./EnablePciPassthrough.vue?vue&type=script&lang=js\"\nexport * from \"./EnablePciPassthrough.vue?vue&type=script&lang=js\"\n\nimport \"./EnablePciPassthrough.vue?vue&type=style&index=0&id=6a7019d1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a7019d1\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnableSriovDevice.vue?vue&type=template&id=bcaa7c4a&scoped=true\"\nimport script from \"./EnableSriovDevice.vue?vue&type=script&lang=js\"\nexport * from \"./EnableSriovDevice.vue?vue&type=script&lang=js\"\n\nimport \"./EnableSriovDevice.vue?vue&type=style&index=0&id=bcaa7c4a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bcaa7c4a\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnableUSBPassthrough.vue?vue&type=template&id=615f4873&scoped=true\"\nimport script from \"./EnableUSBPassthrough.vue?vue&type=script&lang=js\"\nexport * from \"./EnableUSBPassthrough.vue?vue&type=script&lang=js\"\n\nimport \"./EnableUSBPassthrough.vue?vue&type=style&index=0&id=615f4873&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-615f4873\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./EnableVGpuDevice.vue?vue&type=template&id=093a01ba&scoped=true\"\nimport script from \"./EnableVGpuDevice.vue?vue&type=script&lang=js\"\nexport * from \"./EnableVGpuDevice.vue?vue&type=script&lang=js\"\n\nimport \"./EnableVGpuDevice.vue?vue&type=style&index=0&id=093a01ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-093a01ba\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterAddHotplugNic.vue?vue&type=template&id=79803d95&scoped=true\"\nimport script from \"./HarvesterAddHotplugNic.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterAddHotplugNic.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterAddHotplugNic.vue?vue&type=style&index=0&id=79803d95&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-79803d95\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterAddHotplugVolumeModal.vue?vue&type=template&id=a51e9070&scoped=true\"\nimport script from \"./HarvesterAddHotplugVolumeModal.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterAddHotplugVolumeModal.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterAddHotplugVolumeModal.vue?vue&type=style&index=0&id=a51e9070&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a51e9070\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterBackupModal.vue?vue&type=template&id=06d85439&scoped=true\"\nimport script from \"./HarvesterBackupModal.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBackupModal.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterBackupModal.vue?vue&type=style&index=0&id=06d85439&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-06d85439\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=template&id=666432c0&scoped=true\"\nimport script from \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterCPUMemoryHotPlugDialog.vue?vue&type=style&index=0&id=666432c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-666432c0\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.createTemplate.title') }}\n \n\n \n \n\n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterCloneTemplate.vue?vue&type=template&id=528148c0&scoped=true\"\nimport script from \"./HarvesterCloneTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCloneTemplate.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterCloneTemplate.vue?vue&type=style&index=0&id=528148c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-528148c0\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.dataMigration.title') }}\n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterDataMigrationDialog.vue?vue&type=template&id=376027ee&scoped=true\"\nimport script from \"./HarvesterDataMigrationDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterDataMigrationDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterDataMigrationDialog.vue?vue&type=style&index=0&id=376027ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-376027ee\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.ejectCDROM.title') }}\n \n\n \n \n {{ t('harvester.modal.ejectCDROM.operationTip') }}\n \n\n \n \n
\n\n \n {{ t('harvester.modal.ejectCDROM.warnTip') }} \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterEjectCDROMDialog.vue?vue&type=template&id=1730b7fd&scoped=true\"\nimport script from \"./HarvesterEjectCDROMDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterEjectCDROMDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterEjectCDROMDialog.vue?vue&type=style&index=0&id=1730b7fd&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1730b7fd\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=template&id=a0ccbf02&scoped=true\"\nimport script from \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterEnableNvidiaDriverToolkit.vue?vue&type=style&index=0&id=a0ccbf02&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a0ccbf02\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.exportImage.title') }}\n \n\n \n \n\n \n\n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterExportImageDialog.vue?vue&type=template&id=aaa5e7e6&scoped=true\"\nimport script from \"./HarvesterExportImageDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterExportImageDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterExportImageDialog.vue?vue&type=style&index=0&id=aaa5e7e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aaa5e7e6\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterHotUnplug.vue?vue&type=template&id=6ef40bb9&scoped=true\"\nimport script from \"./HarvesterHotUnplug.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHotUnplug.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterHotUnplug.vue?vue&type=style&index=0&id=6ef40bb9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6ef40bb9\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t('harvester.modal.downloadImage.title') }}\n \n\n \n \n {{ t('harvester.modal.downloadImage.banner', { size: imageVirtualSize }) }}\n \n {{ t('harvester.modal.downloadImage.startMessage') }}\n \n \n \n\n \n \n \n \n \n \n\n\n","import { render } from \"./HarvesterImageDownloader.vue?vue&type=template&id=b1684a9e&scoped=true\"\nimport script from \"./HarvesterImageDownloader.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterImageDownloader.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterImageDownloader.vue?vue&type=style&index=0&id=b1684a9e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b1684a9e\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterInsertCdRomVolume.vue?vue&type=template&id=088199f1&scoped=true\"\nimport script from \"./HarvesterInsertCdRomVolume.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterInsertCdRomVolume.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterInsertCdRomVolume.vue?vue&type=style&index=0&id=088199f1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-088199f1\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.host.enableMaintenance.title') }}\n \n\n \n \n \n
\n\n \n\n \n\n \n\n \n
\n \n {{ ucFirst(unhealthyVM.message) }}\n
\n \n\n
\n \n
\n
\n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterMaintenanceDialog.vue?vue&type=template&id=f2cea8a0&scoped=true\"\nimport script from \"./HarvesterMaintenanceDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterMaintenanceDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterMaintenanceDialog.vue?vue&type=style&index=0&id=f2cea8a0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f2cea8a0\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.migration.vmMigrationTitle', { count: resources.length }) }}\n \n\n \n \n \n {{ t('harvester.modal.migration.selectedVMs') }}\n
\n \n \n {{ group.node || t('harvester.modal.migration.unknownNode') }}: {{ group.vms.join(', ') }}\n \n ({{ t('harvester.modal.migration.alreadyOnTarget') }})\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterMigrationDialog.vue?vue&type=template&id=0c57f006&scoped=true\"\nimport script from \"./HarvesterMigrationDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterMigrationDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterMigrationDialog.vue?vue&type=style&index=0&id=0c57f006&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c57f006\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n {{ t('harvester.modal.quota.bannerMessage') }}\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterQuotaDialog.vue?vue&type=template&id=c0ceac3e&scoped=true\"\nimport script from \"./HarvesterQuotaDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterQuotaDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterQuotaDialog.vue?vue&type=style&index=0&id=c0ceac3e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c0ceac3e\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.restore.title') }}\n \n\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterRestoreDialog.vue?vue&type=template&id=5004de14&scoped=true\"\nimport script from \"./HarvesterRestoreDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterRestoreDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterRestoreDialog.vue?vue&type=style&index=0&id=5004de14&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5004de14\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.storageMigration.title') }}\n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterStorageMigrationDialog.vue?vue&type=template&id=31b4bafc&scoped=true\"\nimport script from \"./HarvesterStorageMigrationDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterStorageMigrationDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterStorageMigrationDialog.vue?vue&type=style&index=0&id=31b4bafc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-31b4bafc\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterVMSnapshotDialog.vue?vue&type=template&id=098bab72&scoped=true\"\nimport script from \"./HarvesterVMSnapshotDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVMSnapshotDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVMSnapshotDialog.vue?vue&type=style&index=0&id=098bab72&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-098bab72\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('harvester.modal.migration.title') }}\n \n\n \n \n \n \n\n \n \n \n \n \n\n\n","import { render } from \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=template&id=594fe51d&scoped=true\"\nimport script from \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVlanConfigMigrateDialog.vue?vue&type=style&index=0&id=594fe51d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-594fe51d\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ t('generic.tip') }}\n \n \n\n \n
\n \n\n \n \n
\n \n {{ t('generic.ok') }}\n \n
\n
\n \n \n \n\n\n","import { render } from \"./MessageBox.vue?vue&type=template&id=6bf42877&scoped=true\"\nimport script from \"./MessageBox.vue?vue&type=script&lang=js\"\nexport * from \"./MessageBox.vue?vue&type=script&lang=js\"\n\nimport \"./MessageBox.vue?vue&type=style&index=0&id=6bf42877&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6bf42877\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n
\n \n \n\n \n \n \n \n \n \n\n","import { render } from \"./RestartVMDialog.vue?vue&type=template&id=0f53a5eb&scoped=true\"\nimport script from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\nexport * from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\n\nimport \"./RestartVMDialog.vue?vue&type=style&index=0&id=0f53a5eb&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f53a5eb\"]])\n\nexport default __exports__","\n\n \n \n {{ t('harvester.modal.restoreSnapshot.title') }}\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n","import { render } from \"./RestoreSnapshotDialog.vue?vue&type=template&id=01a80ef0&scoped=true\"\nimport script from \"./RestoreSnapshotDialog.vue?vue&type=script&lang=js\"\nexport * from \"./RestoreSnapshotDialog.vue?vue&type=script&lang=js\"\n\nimport \"./RestoreSnapshotDialog.vue?vue&type=style&index=0&id=01a80ef0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-01a80ef0\"]])\n\nexport default __exports__","\n\n \n \n {{ t('harvester.modal.snapshot.title') }}\n \n\n \n \n \n \n\n \n \n \n \n \n\n","import { render } from \"./SnapshotDialog.vue?vue&type=template&id=b3c709f8&scoped=true\"\nimport script from \"./SnapshotDialog.vue?vue&type=script&lang=js\"\nexport * from \"./SnapshotDialog.vue?vue&type=script&lang=js\"\n\nimport \"./SnapshotDialog.vue?vue&type=style&index=0&id=b3c709f8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b3c709f8\"]])\n\nexport default __exports__","\n\n \n \n {{ t('harvester.modal.volumeClone.title') }}\n \n\n \n \n\n \n \n \n\n \n \n \n \n \n\n","import { render } from \"./VolumeCloneDialog.vue?vue&type=template&id=3892872e&scoped=true\"\nimport script from \"./VolumeCloneDialog.vue?vue&type=script&lang=js\"\nexport * from \"./VolumeCloneDialog.vue?vue&type=script&lang=js\"\n\nimport \"./VolumeCloneDialog.vue?vue&type=style&index=0&id=3892872e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3892872e\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".copy-to-clipboard-text[data-v-037ba460]{white-space:nowrap}.copy-to-clipboard-text.plain[data-v-037ba460]{color:var(--body-text)}.copy-to-clipboard-text.plain[data-v-037ba460]:hover{text-decoration:none}.copy-to-clipboard-text[data-v-037ba460]:active{color:var(--primary-keyboard-focus)}.copy-to-clipboard-text.copied[data-v-037ba460]{pointer-events:none;color:var(--success)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-283398c6],.buttons[data-v-283398c6]{width:100%}.buttons[data-v-283398c6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal-container[data-v-f1be4b1c]{max-width:400px}.actions[data-v-f1be4b1c]{width:100%;text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-49664b68]{text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-6a7019d1],.buttons[data-v-6a7019d1]{width:100%}.buttons[data-v-6a7019d1]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-bcaa7c4a],.buttons[data-v-bcaa7c4a]{width:100%}.buttons[data-v-bcaa7c4a]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-615f4873],.buttons[data-v-615f4873]{width:100%}.buttons[data-v-615f4873]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body[data-v-093a01ba]{display:flex;flex-direction:column}.body-field[data-v-093a01ba]{margin-top:10px}.actions[data-v-093a01ba],.buttons[data-v-093a01ba]{width:100%}.buttons[data-v-093a01ba]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-79803d95],.buttons[data-v-79803d95]{width:100%}.buttons[data-v-79803d95]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-a51e9070],.buttons[data-v-a51e9070]{width:100%}.buttons[data-v-a51e9070]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-06d85439],.buttons[data-v-06d85439]{width:100%}.buttons[data-v-06d85439]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-666432c0],.buttons[data-v-666432c0]{width:100%}.buttons[data-v-666432c0]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-528148c0],.buttons[data-v-528148c0]{width:100%}.buttons[data-v-528148c0]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-376027ee],.buttons[data-v-376027ee]{width:100%}.buttons[data-v-376027ee]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-1730b7fd],.buttons[data-v-1730b7fd]{width:100%}.buttons[data-v-1730b7fd]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body[data-v-a0ccbf02]{display:flex;flex-direction:column;min-width:400px}.actions[data-v-a0ccbf02],.buttons[data-v-a0ccbf02]{width:100%}.buttons[data-v-a0ccbf02]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-aaa5e7e6],.buttons[data-v-aaa5e7e6]{width:100%}.buttons[data-v-aaa5e7e6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-6ef40bb9],.buttons[data-v-6ef40bb9]{width:100%}.buttons[data-v-6ef40bb9]{display:flex;justify-content:flex-end}[data-v-6ef40bb9] .card-title{display:block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-b1684a9e],.buttons[data-v-b1684a9e]{width:100%}.buttons[data-v-b1684a9e]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-088199f1],.buttons[data-v-088199f1]{width:100%}.buttons[data-v-088199f1]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-f2cea8a0]{width:100%}.vm-list[data-v-f2cea8a0]{display:flex;flex-wrap:wrap}.buttons[data-v-f2cea8a0]{display:flex;justify-content:flex-end;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-0c57f006],.buttons[data-v-0c57f006]{width:100%}.buttons[data-v-0c57f006]{display:flex;justify-content:flex-end}.already-on-target[data-v-0c57f006]{color:var(--warning);font-style:italic}.vm-list[data-v-0c57f006]{list-style:disc;padding-left:1.5em;margin-bottom:10px;margin-top:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-c0ceac3e],.buttons[data-v-c0ceac3e]{width:100%}.buttons[data-v-c0ceac3e]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-5004de14],.buttons[data-v-5004de14]{width:100%}.buttons[data-v-5004de14]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-31b4bafc],.buttons[data-v-31b4bafc]{width:100%}.buttons[data-v-31b4bafc]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-098bab72],.buttons[data-v-098bab72]{width:100%}.buttons[data-v-098bab72]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-594fe51d],.buttons[data-v-594fe51d]{width:100%}.buttons[data-v-594fe51d]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-6bf42877],.buttons[data-v-6bf42877]{width:100%}.buttons[data-v-6bf42877]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".restart-modal[data-v-0f53a5eb]{z-index:45}.prompt-restart[data-v-0f53a5eb]{margin:0}.bottom[data-v-0f53a5eb]{display:flex;flex-direction:column;flex:1}.bottom .banner[data-v-0f53a5eb]{margin-top:0}.bottom .buttons[data-v-0f53a5eb]{display:flex;justify-content:flex-end;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-01a80ef0],.buttons[data-v-01a80ef0]{width:100%}.buttons[data-v-01a80ef0]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-b3c709f8],.buttons[data-v-b3c709f8]{width:100%}.buttons[data-v-b3c709f8]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions[data-v-3892872e],.buttons[data-v-3892872e]{width:100%}.buttons[data-v-3892872e]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","export const DEFAULT_FS_FREEZE_DEADLINE = '1s';\n\n/**\n * Generate filesystem freeze deadline options with i18n translations\n * @param {Function} t - i18n translation function\n * @returns {Array} Array of deadline options\n */\nexport function getFsFreezeDeadlineOptions(t) {\n return [\n {\n label: t('generic.duration.infinite'),\n value: '0s'\n },\n {\n label: t('generic.duration.1s'),\n value: '1s'\n },\n {\n label: t('generic.duration.5s'),\n value: '5s'\n },\n {\n label: t('generic.duration.10s'),\n value: '10s'\n },\n {\n label: t('generic.duration.30s'),\n value: '30s'\n },\n {\n label: t('generic.duration.1m'),\n value: '1m'\n },\n {\n label: t('generic.duration.3m'),\n value: '3m'\n },\n {\n label: t('generic.duration.5m'),\n value: '5m'\n }\n ];\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./DiskTags.vue?vue&type=template&id=6b2f75f1&scoped=true\"\nimport script from \"./DiskTags.vue?vue&type=script&lang=js\"\nexport * from \"./DiskTags.vue?vue&type=script&lang=js\"\n\nimport \"./DiskTags.vue?vue&type=style&index=0&id=6b2f75f1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b2f75f1\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./additional-ca.vue?vue&type=template&id=ce5d9238\"\nimport script from \"./additional-ca.vue?vue&type=script&lang=js\"\nexport * from \"./additional-ca.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./additional-guest-memory-overhead-ratio.vue?vue&type=template&id=26d86d02\"\nimport script from \"./additional-guest-memory-overhead-ratio.vue?vue&type=script&lang=js\"\nexport * from \"./additional-guest-memory-overhead-ratio.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./auto-rotate-rke2-certs.vue?vue&type=template&id=034d9714&scoped=true\"\nimport script from \"./auto-rotate-rke2-certs.vue?vue&type=script&lang=js\"\nexport * from \"./auto-rotate-rke2-certs.vue?vue&type=script&lang=js\"\n\nimport \"./auto-rotate-rke2-certs.vue?vue&type=style&index=0&id=034d9714&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-034d9714\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n
\n\n
\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n
\n \n
\n
\n \n\n\n","import { render } from \"./backup-target.vue?vue&type=template&id=4b7055bd&scoped=true\"\nimport script from \"./backup-target.vue?vue&type=script&lang=js\"\nexport * from \"./backup-target.vue?vue&type=script&lang=js\"\n\nimport \"./backup-target.vue?vue&type=style&index=0&id=4b7055bd&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b7055bd\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./cluster-pod-security-standard.vue?vue&type=template&id=2d41baa6\"\nimport script from \"./cluster-pod-security-standard.vue?vue&type=script&lang=js\"\nexport * from \"./cluster-pod-security-standard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./cluster-registration-url.vue?vue&type=template&id=6679b832\"\nimport script from \"./cluster-registration-url.vue?vue&type=script&lang=js\"\nexport * from \"./cluster-registration-url.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
{{ t('harvester.setting.containerdRegistry.mirrors.mirrors') }} \n
\n
\n \n \n \n\n \n
\n {}\"\n @update:value=\"update\"\n />\n
\n
\n\n \n {}\"\n @update:value=\"update\"\n />\n
\n\n \n {}\"\n @update:value=\"update\"\n />\n
\n \n
\n\n
\n {{ t('harvester.setting.containerdRegistry.mirrors.addMirror') }}\n \n\n
\n\n
{{ t('harvester.setting.containerdRegistry.configs.configs') }} \n
\n
\n \n \n \n\n \n\n \n\n \n\n \n \n
\n \n\n
\n {{ t('harvester.setting.containerdRegistry.configs.addConfig') }}\n \n
\n
\n \n\n\n","import { render } from \"./containerd-registry.vue?vue&type=template&id=d281fc5e&scoped=true\"\nimport script from \"./containerd-registry.vue?vue&type=script&lang=js\"\nexport * from \"./containerd-registry.vue?vue&type=script&lang=js\"\n\nimport \"./containerd-registry.vue?vue&type=style&index=0&id=d281fc5e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d281fc5e\"]])\n\nexport default __exports__","\n\n\n \n
\n \n \n \n\n \n
\n {}\"\n @update:value=\"update\"\n />\n
\n\n
\n {}\"\n @update:value=\"update\"\n />\n
\n\n
\n {}\"\n @update:value=\"update\"\n />\n
\n
\n \n\n
\n {{ t('generic.add') }}\n \n
\n \n\n\n","import { render } from \"./csi-driver-config.vue?vue&type=template&id=a4b4739a&scoped=true\"\nimport script from \"./csi-driver-config.vue?vue&type=script&lang=js\"\nexport * from \"./csi-driver-config.vue?vue&type=script&lang=js\"\n\nimport \"./csi-driver-config.vue?vue&type=style&index=0&id=a4b4739a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a4b4739a\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ errorMsg }}\n \n
\n \n \n \n\n \n
\n \n
\n\n
\n onValueChange(idx, val)\"\n @keydown.native.enter.prevent\n />\n
\n
\n \n\n
\n {{ t('generic.add') }}\n \n
\n \n\n\n","import { render } from \"./csi-online-expand-validation.vue?vue&type=template&id=0083bb1a&scoped=true\"\nimport script from \"./csi-online-expand-validation.vue?vue&type=script&lang=js\"\nexport * from \"./csi-online-expand-validation.vue?vue&type=script&lang=js\"\n\nimport \"./csi-online-expand-validation.vue?vue&type=style&index=0&id=0083bb1a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0083bb1a\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./default-vm-termination-grace-period-seconds.vue?vue&type=template&id=6850d3c8\"\nimport script from \"./default-vm-termination-grace-period-seconds.vue?vue&type=script&lang=js\"\nexport * from \"./default-vm-termination-grace-period-seconds.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./http-proxy.vue?vue&type=template&id=b3173be4\"\nimport script from \"./http-proxy.vue?vue&type=script&lang=js\"\nexport * from \"./http-proxy.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ parseError }}\n \n\n
\n
\n \n","import { render } from \"./instance-manager-resources.vue?vue&type=template&id=9b82f154\"\nimport script from \"./instance-manager-resources.vue?vue&type=script&lang=js\"\nexport * from \"./instance-manager-resources.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ parseError }}\n \n\n
\n
\n
\n
\n
\n
\n
\n {{ t(`harvester.setting.kubevirtMigration.${field}`) }} \n \n
\n
\n
\n \n\n\n","import { render } from \"./kubevirt-migration.vue?vue&type=template&id=24ae0fbe&scoped=true\"\nimport script from \"./kubevirt-migration.vue?vue&type=script&lang=js\"\nexport * from \"./kubevirt-migration.vue?vue&type=script&lang=js\"\n\nimport \"./kubevirt-migration.vue?vue&type=style&index=0&id=24ae0fbe&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24ae0fbe\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./ntp-servers.vue?vue&type=template&id=684a5255\"\nimport script from \"./ntp-servers.vue?vue&type=script&lang=js\"\nexport * from \"./ntp-servers.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./overcommit-config.vue?vue&type=template&id=e7c025b0\"\nimport script from \"./overcommit-config.vue?vue&type=script&lang=js\"\nexport * from \"./overcommit-config.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./rancher-cluster.vue?vue&type=template&id=c0399262&scoped=true\"\nimport script from \"./rancher-cluster.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-cluster.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-cluster.vue?vue&type=style&index=0&id=c0399262&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c0399262\"]])\n\nexport default __exports__","\n\n\n \n
\n \n \n
\n\n
\n
\n \n \n
\n \n\n \n\n \n\n \n\n \n \n \n
\n {{ t('harvester.setting.storageNetwork.exclude.label') }}\n
\n
\n \n \n \n \n
\n \n \n \n
\n \n","import { render } from \"./rwx-network.vue?vue&type=template&id=b93b4740\"\nimport script from \"./rwx-network.vue?vue&type=script&lang=js\"\nexport * from \"./rwx-network.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t('harvester.setting.sslCertificates.publicCertificate') }}\n
\n\n
\n \n {{ publicCertificateFileName ? publicCertificateFileName : t('harvester.generic.noFileChosen') }} \n
\n
\n
\n\n
\n
\n
\n {{ t('harvester.setting.sslCertificates.privateKey') }}\n
\n\n
\n \n {{ privateKeyFileName ? privateKeyFileName : t('harvester.generic.noFileChosen') }} \n
\n
\n
\n\n
\n
\n
\n {{ t('harvester.setting.sslCertificates.ca') }}\n
\n\n
\n \n {{ caFileName ? caFileName : t('harvester.generic.noFileChosen') }} \n
\n
\n
\n
\n \n\n\n","import { render } from \"./ssl-certificates.vue?vue&type=template&id=27a09764&scoped=true\"\nimport script from \"./ssl-certificates.vue?vue&type=script&lang=js\"\nexport * from \"./ssl-certificates.vue?vue&type=script&lang=js\"\n\nimport \"./ssl-certificates.vue?vue&type=style&index=0&id=27a09764&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-27a09764\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./ssl-parameters.vue?vue&type=template&id=6da8c495\"\nimport script from \"./ssl-parameters.vue?vue&type=script&lang=js\"\nexport * from \"./ssl-parameters.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n \n\n
\n\n
\n
\n\n
\n
\n
\n\n
\n
\n \n \n\n
\n \n \n
\n {{ t('harvester.setting.storageNetwork.exclude.label') }}\n
\n
\n \n \n \n \n
\n \n \n
\n
\n \n","import { render } from \"./storage-network.vue?vue&type=template&id=2cd217c2\"\nimport script from \"./storage-network.vue?vue&type=script&lang=js\"\nexport * from \"./storage-network.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./support-bundle-image.vue?vue&type=template&id=a914459c\"\nimport script from \"./support-bundle-image.vue?vue&type=script&lang=js\"\nexport * from \"./support-bundle-image.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./support-bundle-namespaces.vue?vue&type=template&id=30c22bd6\"\nimport script from \"./support-bundle-namespaces.vue?vue&type=script&lang=js\"\nexport * from \"./support-bundle-namespaces.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('harvester.setting.upgrade.imagePreloadStrategy') }} \n
\n
\n
{{ t('harvester.setting.upgrade.restoreVM') }} \n
\n
\n {{ t('harvester.setting.upgrade.nodeUpgradeOption') }} \n \n \n
\n
\n {{ errors[0] }}\n
\n
\n
\n
\n \n\n\n","import { render } from \"./upgrade-config.vue?vue&type=template&id=61439304&scoped=true\"\nimport script from \"./upgrade-config.vue?vue&type=script&lang=js\"\nexport * from \"./upgrade-config.vue?vue&type=script&lang=js\"\n\nimport \"./upgrade-config.vue?vue&type=style&index=0&id=61439304&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61439304\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./vm-force-reset-policy.vue?vue&type=template&id=00b18892&scoped=true\"\nimport script from \"./vm-force-reset-policy.vue?vue&type=script&lang=js\"\nexport * from \"./vm-force-reset-policy.vue?vue&type=script&lang=js\"\n\nimport \"./vm-force-reset-policy.vue?vue&type=style&index=0&id=00b18892&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00b18892\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ errorMsg }}\n \n
\n
\n \n \n \n \n \n
\n \n","import { render } from \"./vm-migration-network.vue?vue&type=template&id=ddb434ee\"\nimport script from \"./vm-migration-network.vue?vue&type=script&lang=js\"\nexport * from \"./vm-migration-network.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n
\n \n \n\n \n \n \n \n \n \n\n","import { render } from \"./RestartVMDialog.vue?vue&type=template&id=0f53a5eb&scoped=true\"\nimport script from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\nexport * from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\n\nimport \"./RestartVMDialog.vue?vue&type=style&index=0&id=0f53a5eb&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f53a5eb\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n \n \n \n
\n \n \n \n \n","import { render } from \"./devices.harvesterhci.io.migconfiguration.vue?vue&type=template&id=800ef0c6\"\nimport script from \"./devices.harvesterhci.io.migconfiguration.vue?vue&type=script&lang=js\"\nexport * from \"./devices.harvesterhci.io.migconfiguration.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import script from \"./forklift.konveyor.io.provider.vue?vue&type=script&lang=js\"\nexport * from \"./forklift.konveyor.io.provider.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./generic.vue?vue&type=template&id=24a677c4&scoped=true\"\nimport script from \"./generic.vue?vue&type=script&lang=js\"\nexport * from \"./generic.vue?vue&type=script&lang=js\"\n\nimport \"./generic.vue?vue&type=style&index=0&id=24a677c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24a677c4\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./harvester-seeder.vue?vue&type=template&id=4b980a18&scoped=true\"\nimport script from \"./harvester-seeder.vue?vue&type=script&lang=js\"\nexport * from \"./harvester-seeder.vue?vue&type=script&lang=js\"\n\nimport \"./harvester-seeder.vue?vue&type=style&index=0&id=4b980a18&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b980a18\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=639fa9c4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./nvidia-driver-toolkit.vue?vue&type=template&id=365beeb4&scoped=true\"\nimport script from \"./nvidia-driver-toolkit.vue?vue&type=script&lang=js\"\nexport * from \"./nvidia-driver-toolkit.vue?vue&type=script&lang=js\"\n\nimport \"./nvidia-driver-toolkit.vue?vue&type=style&index=0&id=365beeb4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-365beeb4\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./pcidevices-controller.vue?vue&type=template&id=bdc3ab06&scoped=true\"\nimport script from \"./pcidevices-controller.vue?vue&type=script&lang=js\"\nexport * from \"./pcidevices-controller.vue?vue&type=script&lang=js\"\n\nimport \"./pcidevices-controller.vue?vue&type=style&index=0&id=bdc3ab06&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bdc3ab06\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./rancher-logging.vue?vue&type=template&id=4ac8f18c&scoped=true\"\nimport script from \"./rancher-logging.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-logging.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-logging.vue?vue&type=style&index=0&id=4ac8f18c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ac8f18c\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n
\n \n \n \n \n
\n
\n {{ t('monitoring.prometheus.config.resourceLimits') }}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n
\n \n \n \n \n \n \n\n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n
\n \n\n \n \n \n \n\n\n","import { render } from \"./rancher-monitoring.vue?vue&type=template&id=077b6bf4&scoped=true\"\nimport script from \"./rancher-monitoring.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-monitoring.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-monitoring.vue?vue&type=style&index=0&id=077b6bf4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-077b6bf4\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./rancher-vcluster.vue?vue&type=template&id=b9cb7bba&scoped=true\"\nimport script from \"./rancher-vcluster.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-vcluster.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-vcluster.vue?vue&type=style&index=0&id=b9cb7bba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b9cb7bba\"]])\n\nexport default __exports__","\n\n\n \n \n \n\n \n
\n
\n\n
\n
{{ t('harvester.addons.vmImport.titles.pvc') }} \n
\n
\n \n \n \n\n\n","import { render } from \"./vm-import-controller.vue?vue&type=template&id=7d4cbfa3&scoped=true\"\nimport script from \"./vm-import-controller.vue?vue&type=script&lang=js\"\nexport * from \"./vm-import-controller.vue?vue&type=script&lang=js\"\n\nimport \"./vm-import-controller.vue?vue&type=style&index=0&id=7d4cbfa3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7d4cbfa3\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n
\n\n \n \n
\n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.cloudtemplate.vue?vue&type=template&id=31d6e416&scoped=true\"\nimport script from \"./harvesterhci.io.cloudtemplate.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.cloudtemplate.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.cloudtemplate.vue?vue&type=style&index=0&id=31d6e416&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-31d6e416\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n {{ t('harvester.host.disk.conditions') }}:\n \n \n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n {}\"\n />\n
\n
\n \n \n
\n
\n {}\"\n />\n
\n
\n
\n \n {{ t('harvester.host.disk.lvmVolumeGroup.label') }}\n \n\n \n {}\"\n />\n \n \n
\n \n\n\n","import { render } from \"./HarvesterDisk.vue?vue&type=template&id=5178a7e6&scoped=true\"\nimport script from \"./HarvesterDisk.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterDisk.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterDisk.vue?vue&type=style&index=0&id=5178a7e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5178a7e6\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n \n \n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n","import { render } from \"./HarvesterHugepages.vue?vue&type=template&id=295b19e3\"\nimport script from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
0\">\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n \n {{ t('harvester.seeder.inventory.secret.create.title') }}\n \n\n \n \n\n \n\n \n \n \n
\n
\n \n","import { render } from \"./HarvesterSeeder.vue?vue&type=template&id=a2a1671e\"\nimport script from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n \n
\n
\n
\n \n \n\n \n \n \n \n \n \n \n \n \n addDisk(e.value)\"\n @dd-button-action=\"ddButtonAction\"\n >\n \n \n \n {{ option.label }}\n \n \n \n {{ option.label }}\n
\n \n \n \n \n onRemove(scope)\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n
\n\n \n
\n \n\n","import { render } from \"./index.vue?vue&type=template&id=467db875&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=467db875&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-467db875\"]])\n\nexport default __exports__","\n\n\n \n \n\n \n\n \n \n \n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.keypair.vue?vue&type=template&id=59bb2be6&scoped=true\"\nimport script from \"./harvesterhci.io.keypair.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.keypair.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.keypair.vue?vue&type=style&index=0&id=59bb2be6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-59bb2be6\"]])\n\nexport default __exports__","\n","import script from \"./harvesterhci.io.logging.clusterflow.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.clusterflow.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n","import script from \"./harvesterhci.io.logging.clusteroutput.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.clusteroutput.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n \n \n","import { render } from \"./harvesterhci.io.logging.flow.vue?vue&type=template&id=3b39f8e8\"\nimport script from \"./harvesterhci.io.logging.flow.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.flow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
errors=e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n 1\"\n color=\"info\"\n >\n {{ t('logging.output.tips.singleProvider') }}\n \n \n {{ t('logging.output.tips.multipleProviders') }}\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n \n\n\n","import { render } from \"./harvesterhci.io.logging.output.vue?vue&type=template&id=32f72914\"\nimport script from \"./harvesterhci.io.logging.output.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.output.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.logging.output.vue?vue&type=style&index=0&id=32f72914&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n\n \n \n \n \n \n \n \n \n \n {{ t('monitoring.receiver.addReceiver') }}\n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=3585e2fe&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3585e2fe&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3585e2fe\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n \n\n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n {{ t('harvester.fields.remove') }}\n \n
\n
\n
\n
\n {{ t('harvester.vlanStatus.vlanConfig.vlanTrunk.add') }}\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=template&id=17d6f3b0&scoped=true\"\nimport script from \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=style&index=0&id=17d6f3b0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17d6f3b0\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n
\n \n \n \n {{ t('harvester.backup.message.errorTip.suffix') }} {{ errorMessage }}\n \n \n \n
\n \n
\n
\n
\n \n \n \n \n \n {{ t('harvester.schedule.cron.editButton') }}\n \n \n
\n \n \n \n \n \n \n\n\n","import cronstrue from 'cronstrue';\n\nexport function isCronValid(schedule = '') {\n try {\n const hint = cronstrue.toString(schedule);\n\n return !!hint;\n } catch (e) {\n return false;\n }\n}\n","import { render } from \"./harvesterhci.io.schedulevmbackup.vue?vue&type=template&id=cab29070&scoped=true\"\nimport script from \"./harvesterhci.io.schedulevmbackup.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.schedulevmbackup.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.schedulevmbackup.vue?vue&type=style&index=0&id=cab29070&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cab29070\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./harvesterhci.io.secret.vue?vue&type=template&id=646e34d2\"\nimport script from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n @finish=\"saveSettings\"\n @cancel=\"done\"\n >\n \n\n \n\n \n
\n \n {{ t('advancedSettings.edit.useDefault') }}\n \n \n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n\n\n","import { render } from \"./harvesterhci.io.setting.vue?vue&type=template&id=45d7bc4b&scoped=true\"\nimport script from \"./harvesterhci.io.setting.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.setting.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.setting.vue?vue&type=style&index=0&id=45d7bc4b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-45d7bc4b\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n \n {{ t('harvester.storage.cdiSettings.volumeModeAccessModes.volumeMode') }}\n \n \n {{ t('harvester.storage.cdiSettings.volumeModeAccessModes.accessModes.label') }}\n \n
\n
\n \n\n \n \n \n \n\n \n\n \n\n \n \n\n\n","import { render } from \"./CDISettings.vue?vue&type=template&id=f04994c6&scoped=true\"\nimport script from \"./CDISettings.vue?vue&type=script&lang=js\"\nexport * from \"./CDISettings.vue?vue&type=script&lang=js\"\n\nimport \"./CDISettings.vue?vue&type=style&index=0&id=f04994c6&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f04994c6\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n errors=e\"\r\n @finish=\"save\"\r\n @cancel=\"done\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ t('generic.key') }}\r\n * \r\n
\r\n
\r\n {{ t('generic.value') }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render } from \"./index.vue?vue&type=template&id=e0dfa694&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e0dfa694&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e0dfa694\"]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n","import { render } from \"./custom.vue?vue&type=template&id=28c88542\"\nimport script from \"./custom.vue?vue&type=script&lang=js\"\nexport * from \"./custom.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.nodeSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.diskSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./driver.longhorn.io_v1.vue?vue&type=template&id=76a78353&scoped=true\"\nimport script from \"./driver.longhorn.io_v1.vue?vue&type=script&lang=js\"\nexport * from \"./driver.longhorn.io_v1.vue?vue&type=script&lang=js\"\n\nimport \"./driver.longhorn.io_v1.vue?vue&type=style&index=0&id=76a78353&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-76a78353\"]])\n\nexport default __exports__","\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.nodeSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.diskSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./driver.longhorn.io_v2.vue?vue&type=template&id=1618b260&scoped=true\"\nimport script from \"./driver.longhorn.io_v2.vue?vue&type=script&lang=js\"\nexport * from \"./driver.longhorn.io_v2.vue?vue&type=script&lang=js\"\n\nimport \"./driver.longhorn.io_v2.vue?vue&type=style&index=0&id=1618b260&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1618b260\"]])\n\nexport default __exports__","\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.diskSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.lvmVolumeGroup.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./lvm.driver.harvesterhci.io.vue?vue&type=template&id=6afc4f36&scoped=true\"\nimport script from \"./lvm.driver.harvesterhci.io.vue?vue&type=script&lang=js\"\nexport * from \"./lvm.driver.harvesterhci.io.vue?vue&type=script&lang=js\"\n\nimport \"./lvm.driver.harvesterhci.io.vue?vue&type=style&index=0&id=6afc4f36&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6afc4f36\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n \n
\n \n\n\n","import { render } from \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=template&id=78a029f1&scoped=true\"\nimport script from \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=style&index=0&id=78a029f1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-78a029f1\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n
\n
\n\n
\n\n
\n
\n\n
\n \n {{ t('harvester.image.uploadFile') }}\n \n \n \n\n
\n \n {{ uploadFileName }}\n
\n
\n\n
\n\n
\n
\n
\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.virtualmachineimage.vue?vue&type=template&id=64a57538&scoped=true\"\nimport script from \"./harvesterhci.io.virtualmachineimage.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.virtualmachineimage.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.virtualmachineimage.vue?vue&type=style&index=0&id=64a57538&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-64a57538\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n\n \n \n \n\n \n \n
\n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n\n \n\n \n\n \n\n
\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n \n","import { render } from \"./harvesterhci.io.virtualmachinetemplateversion.vue?vue&type=template&id=00231130\"\nimport script from \"./harvesterhci.io.virtualmachinetemplateversion.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.virtualmachinetemplateversion.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n
\n\n \n
\n \n\n\n","import { render } from \"./harvesterhci.io.vmsnapshot.vue?vue&type=template&id=68f0cfa3&scoped=true\"\nimport script from \"./harvesterhci.io.vmsnapshot.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.vmsnapshot.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.vmsnapshot.vue?vue&type=style&index=0&id=68f0cfa3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-68f0cfa3\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n\n \n\n \n\n \n\n \n {{ t('harvester.volume.longhorn.disableResize') }} \n \n\n \n \n
\n \n {{ showAdvanced ? t('harvester.volume.hideAdvanced') : t('harvester.volume.showAdvanced') }}\n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./harvesterhci.io.volume.vue?vue&type=template&id=040d382a\"\nimport script from \"./harvesterhci.io.volume.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.volume.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n
errors=e\"\n >\n \n \n \n \n \n \n \n \n \n
\n \n","import { render } from \"./harvesterhci.io.volumesnapshot.vue?vue&type=template&id=9eaa880e\"\nimport script from \"./harvesterhci.io.volumesnapshot.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.volumesnapshot.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.iptablesdnatrule.vue?vue&type=template&id=0036c0c0\"\nimport script from \"./kubeovn.io.iptablesdnatrule.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.iptablesdnatrule.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.iptableseip.vue?vue&type=template&id=55ccd778\"\nimport script from \"./kubeovn.io.iptableseip.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.iptableseip.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.iptablessnatrule.vue?vue&type=template&id=84b22d1c\"\nimport script from \"./kubeovn.io.iptablessnatrule.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.iptablessnatrule.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n\n \n\n \n \n \n \n {{ t('harvester.providerNetwork.customInterfaces.addLabel') }}\n \n
\n \n\n \n \n
\n {{ t('harvester.providerNetwork.customInterfaces.interface.label') }}\n
\n
\n {{ t('harvester.providerNetwork.customInterfaces.nodes.label') }}\n
\n
\n \n\n \n \n \n \n \n\n \n
\n
\n
\n {{ t('harvester.providerNetwork.customInterfaces.interface.label') }}\n \n \n \n
\n\n
\n
\n
\n \n \n \n {{ t('harvester.providerNetwork.customInterfaces.nodes.addLabel') }}\n \n
\n \n \n
\n
\n
\n \n \n \n \n\n \n \n \n \n \n \n\n\n","import { render } from \"./kubeovn.io.providernetwork.vue?vue&type=template&id=153488d4&scoped=true\"\nimport script from \"./kubeovn.io.providernetwork.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.providernetwork.vue?vue&type=script&lang=js\"\n\nimport \"./kubeovn.io.providernetwork.vue?vue&type=style&index=0&id=153488d4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-153488d4\"]])\n\nexport default __exports__","\n\n\n \n
0\"\n color=\"info\"\n >\n \n \n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n \n\n\n","import { render } from \"./AccessControlList.vue?vue&type=template&id=590f4df4&scoped=true\"\nimport script from \"./AccessControlList.vue?vue&type=script&lang=js\"\nexport * from \"./AccessControlList.vue?vue&type=script&lang=js\"\n\nimport \"./AccessControlList.vue?vue&type=style&index=0&id=590f4df4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-590f4df4\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n
\n {{ t('harvester.subnet.allowSubnet.label') }}\n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n {{ t('harvester.setting.storageNetwork.exclude.label') }}\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=13084858&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=13084858&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-13084858\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.vlan.vue?vue&type=template&id=34aa1f3c\"\nimport script from \"./kubeovn.io.vlan.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.vlan.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n \n
\n
\n \n
\n
\n \n {{ row.cidr }}\n \n \n
\n
\n \n {{ row.nextHopIP }}\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n\n\n","import { render } from \"./StaticRoutes.vue?vue&type=template&id=cff1ac6e&scoped=true\"\nimport script from \"./StaticRoutes.vue?vue&type=script&lang=js\"\nexport * from \"./StaticRoutes.vue?vue&type=script&lang=js\"\n\nimport \"./StaticRoutes.vue?vue&type=style&index=0&id=cff1ac6e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cff1ac6e\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n
\n \n {{ row.localConnectIP }}\n \n \n
\n
\n \n {{ row.remoteVpc }}\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n\n\n","import { render } from \"./VpcPeerings.vue?vue&type=template&id=4bce4a2b&scoped=true\"\nimport script from \"./VpcPeerings.vue?vue&type=script&lang=js\"\nexport * from \"./VpcPeerings.vue?vue&type=script&lang=js\"\n\nimport \"./VpcPeerings.vue?vue&type=style&index=0&id=4bce4a2b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4bce4a2b\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=64234cf0\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.vpcnatgateway.vue?vue&type=template&id=19cc0e2a\"\nimport script from \"./kubeovn.io.vpcnatgateway.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.vpcnatgateway.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t('harvester.devices.matrixDeviceClaimName') }}\n
\n
{{ t('harvester.devices.matrixHostName') }}
\n
\n
\n {{ nodeName }} \n
\n
\n
\n
\n {{ deviceCRD.metadata.name }}\n
\n
\n
\n
\n \n\n\n","import { render } from \"./CompatibilityMatrix.vue?vue&type=template&id=3ec20e2a\"\nimport script from \"./CompatibilityMatrix.vue?vue&type=script&lang=js\"\nexport * from \"./CompatibilityMatrix.vue?vue&type=script&lang=js\"\n\nimport \"./CompatibilityMatrix.vue?vue&type=style&index=0&id=3ec20e2a&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n {{ fetchError }}\n \n \n
\n \n","import { render } from \"./VirtualMachineCpuModel.vue?vue&type=template&id=fd9dbe24\"\nimport script from \"./VirtualMachineCpuModel.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineCpuModel.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.virtualMachine.filesystem.description') }}\n
\n\n
\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n {{ t('generic.remove') }}\n \n
\n
\n
\n\n
0 && mode === 'create'\"\n color=\"warning\"\n class=\"mt-10\"\n >\n \n
\n
\n
{{ allMountCommands }} \n
\n
\n
\n \n\n
\n {{ t('harvester.virtualMachine.filesystem.add') }}\n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=0d9401e2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0d9401e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0d9401e2\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n 0\"\n color=\"info\"\n >\n \n \n
\n
\n
\n \n
\n \n \n {{ option.value }} ({{ option.displayLabel }}) \n \n \n
\n
\n \n
\n Compatible hosts:\n \n {{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }} \n
\n
\n \n {{ t('harvester.pci.impossibleSelection') }}\n
\n {showMatrix = !showMatrix; e.target.blur()}\"\n >\n {{ showMatrix ? t('harvester.pci.hideCompatibility') : t('harvester.pci.showCompatibility') }}\n \n \n \n
\n
\n \n","import { render } from \"./index.vue?vue&type=template&id=98ac7250\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./VirtualMachineReserved.vue?vue&type=template&id=d03ca8f8\"\nimport script from \"./VirtualMachineReserved.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineReserved.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n 0\"\n color=\"info\"\n >\n \n \n
\n
\n
\n \n
\n \n \n {{ option.value }} ({{ option.displayLabel }}) \n \n \n
\n
\n \n
\n Compatible hosts:\n \n {{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }} \n
\n
\n \n {{ t('harvester.usb.impossibleSelection') }}\n
\n {showMatrix = !showMatrix; e.target.blur()}\"\n >\n {{ showMatrix ? t('harvester.usb.hideCompatibility') : t('harvester.usb.showCompatibility') }}\n \n \n \n
\n
\n \n","import { render } from \"./index.vue?vue&type=template&id=bba6151a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n 0\"\n color=\"info\"\n >\n \n \n
\n
\n
\n \n
\n \n \n {{ option.value }} \n \n \n
\n
\n \n
\n Compatible hosts:\n \n {{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }} \n
\n
\n \n {{ t('harvester.vgpu.impossibleSelection') }}\n
\n \n
\n
\n \n","import { render } from \"./index.vue?vue&type=template&id=674e274c\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.virtualMachine.sysprep.title') }}\n \n
\n \n
\n\n \n
\n\n \n
\n
\n \n {{ xmlContentValidationError }}\n \n\n
\n \n
\n
\n\n
\n \n {{ t('harvester.virtualMachine.sysprep.createNewTitle') }}\n \n\n \n {}\"\n />\n\n \n \n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=7c353956&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7c353956&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7c353956\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n\n \n\n \n\n \n\n \n \n \n\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n {{ t('harvester.virtualMachine.cpuPinning.restartVMMessage') }}\n \n \n \n \n\n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=b8e4d116&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=b8e4d116&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b8e4d116\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.ipPool.scope.label') }}\n \n
\n \n
\n \n\n\n","import { render } from \"./Priority.vue?vue&type=template&id=4914b3a7&scoped=true\"\nimport script from \"./Priority.vue?vue&type=script&lang=js\"\nexport * from \"./Priority.vue?vue&type=script&lang=js\"\n\nimport \"./Priority.vue?vue&type=style&index=0&id=4914b3a7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4914b3a7\"]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ row.project }}\n \n \n
\n
\n \n {{ row.namespace }}\n \n \n
\n
\n \n {{ row.guestCluster }}\n \n \n
\n
\n \n \n \n
\n
\n \n\n\n","import { render } from \"./PriorityRow.vue?vue&type=template&id=4db6b05a&scoped=true\"\nimport script from \"./PriorityRow.vue?vue&type=script&lang=js\"\nexport * from \"./PriorityRow.vue?vue&type=script&lang=js\"\n\nimport \"./PriorityRow.vue?vue&type=style&index=0&id=4db6b05a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4db6b05a\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./Range.vue?vue&type=template&id=6a840725&scoped=true\"\nimport script from \"./Range.vue?vue&type=script&lang=js\"\nexport * from \"./Range.vue?vue&type=script&lang=js\"\n\nimport \"./Range.vue?vue&type=style&index=0&id=6a840725&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a840725\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./Selector.vue?vue&type=template&id=3d16d01e\"\nimport script from \"./Selector.vue?vue&type=script&lang=js\"\nexport * from \"./Selector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=e176b65a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./HealthCheck.vue?vue&type=template&id=3bd3310d\"\nimport script from \"./HealthCheck.vue?vue&type=script&lang=js\"\nexport * from \"./HealthCheck.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n \n {{ row.name }}\n \n \n
\n
\n \n {{ row.protocol }}\n \n \n
\n
\n \n {{ row.port }}\n \n \n
\n
\n {{ row.backendPort }} \n \n
\n
\n \n \n \n
\n
\n
\n \n
\n \n\n\n","import { render } from \"./Listeners.vue?vue&type=template&id=602acdc3&scoped=true\"\nimport script from \"./Listeners.vue?vue&type=script&lang=js\"\nexport * from \"./Listeners.vue?vue&type=script&lang=js\"\n\nimport \"./Listeners.vue?vue&type=style&index=0&id=602acdc3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-602acdc3\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=ef4b96d4&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=ef4b96d4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ef4b96d4\"]])\n\nexport default __exports__","\n\n errors=e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./management.cattle.io.project.vue?vue&type=template&id=7f5a52dc\"\nimport script from \"./management.cattle.io.project.vue?vue&type=script&lang=js\"\nexport * from \"./management.cattle.io.project.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n \n","import { render } from \"./migration.harvesterhci.io.openstacksource.vue?vue&type=template&id=0552dc6a\"\nimport script from \"./migration.harvesterhci.io.openstacksource.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.openstacksource.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n \n","import { render } from \"./migration.harvesterhci.io.ovasource.vue?vue&type=template&id=dad41584\"\nimport script from \"./migration.harvesterhci.io.ovasource.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.ovasource.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n\n \n \n\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n {{ t('harvester.addons.vmImport.actions.remove') }}\n \n
\n
\n
\n \n {{ t('harvester.addons.vmImport.actions.addNetwork') }}\n \n \n\n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=template&id=6df4a4c4&scoped=true\"\nimport script from \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=script&lang=js\"\n\nimport \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=style&index=0&id=6df4a4c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6df4a4c4\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n\n \n
\n
\n\n
\n Note: A new Kubernetes Secret will be created to store these credentials.\n
\n
\n\n \n \n \n \n \n","import { render } from \"./migration.harvesterhci.io.vmwaresource.vue?vue&type=template&id=4ffcc8d4\"\nimport script from \"./migration.harvesterhci.io.vmwaresource.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.vmwaresource.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=3f1cf506\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors = e\"\n >\n \n\n \n \n \n\n \n \n\n \n
\n \n \n \n \n \n \n \n {{ t('harvester.hostNetworkConfig.underlay.conflict', { name: underlayConflict.nameDisplay || underlayConflict.id }) }}\n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ t('harvester.hostNetworkConfig.nodeSelector.addButton') }}\n \n \n \n \n \n \n\n\n","\n\n\n \n \n","import { render } from \"./HarvesterNodeSelector.vue?vue&type=template&id=90c8c984\"\nimport script from \"./HarvesterNodeSelector.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterNodeSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=template&id=53cc9408&scoped=true\"\nimport script from \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=script&lang=js\"\nexport * from \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=script&lang=js\"\n\nimport \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=style&index=0&id=53cc9408&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-53cc9408\"]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n \n \n
\n \n \n
\n \n","import { render } from \"./NodeSelector.vue?vue&type=template&id=912808be\"\nimport script from \"./NodeSelector.vue?vue&type=script&lang=js\"\nexport * from \"./NodeSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n\n \n \n \n \n \n\n \n \n\n \n\n \n {{ t('harvester.vlanConfig.titles.bondOptions') }}\n \n \n\n \n {{ t('harvester.vlanConfig.titles.attributes') }}\n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=1750718a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1750718a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1750718a\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n
\n \n\n\n","import { render } from \"./networking.k8s.io.networkpolicy.vue?vue&type=template&id=7a1c4cde&scoped=true\"\nimport script from \"./networking.k8s.io.networkpolicy.vue?vue&type=script&lang=js\"\nexport * from \"./networking.k8s.io.networkpolicy.vue?vue&type=script&lang=js\"\n\nimport \"./networking.k8s.io.networkpolicy.vue?vue&type=style&index=0&id=7a1c4cde&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7a1c4cde\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".migration-field[data-v-24ae0fbe]{display:flex;flex-direction:column;gap:12px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-61439304]{color:#d9534f;margin-top:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tag[data-v-6b2f75f1]{border:1px solid var(--primary);border-radius:var(--border-radius);box-sizing:border-box;margin:0;padding:0;font-size:14px;line-height:20px;list-style:none;display:inline-block;height:auto;margin-inline-end:8px;padding-inline:7px;white-space:nowrap;background:var(--accent-btn);opacity:1;text-align:start;color:var(--link);margin-bottom:10px;margin-right:8px;padding-top:8px;padding-bottom:8px}.tag i[data-v-6b2f75f1],.tag.add[data-v-6b2f75f1]{cursor:pointer}.tag.add[data-v-6b2f75f1]{border-style:dashed}.tag.add[data-v-6b2f75f1],.tag.input[data-v-6b2f75f1]{background:var(--body-bg)}.tag.input[data-v-6b2f75f1]{border:none;border-radius:none;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-034d9714] .radio-group{display:flex}[data-v-034d9714] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"p[data-v-4b7055bd]{display:flex;align-items:center}.icon-h-question[data-v-4b7055bd]{font-size:24px}.tip[data-v-4b7055bd]{font-size:15px}.goCA[data-v-4b7055bd]{margin:0 3px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-d281fc5e]{position:relative;padding-top:40px}.remove[data-v-d281fc5e]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-a4b4739a]{position:relative;padding-top:40px}.remove[data-v-a4b4739a]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-0083bb1a]{position:relative;padding-top:40px}.remove[data-v-0083bb1a]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-c0399262] .yaml-editor{flex:1;min-height:540px}[data-v-c0399262] .yaml-editor .code-mirror .CodeMirror{position:static;height:auto;min-height:540px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".chooseFile[data-v-27a09764]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-00b18892] .radio-group{display:flex}[data-v-00b18892] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".restart-modal[data-v-0f53a5eb]{z-index:45}.prompt-restart[data-v-0f53a5eb]{margin:0}.bottom[data-v-0f53a5eb]{display:flex;flex-direction:column;flex:1}.bottom .banner[data-v-0f53a5eb]{margin-top:0}.bottom .buttons[data-v-0f53a5eb]{display:flex;justify-content:flex-end;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-24a677c4] .radio-group{display:flex}[data-v-24a677c4] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-4b980a18] .radio-group{display:flex}[data-v-4b980a18] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-365beeb4] .radio-group{display:flex}[data-v-365beeb4] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-bdc3ab06] .radio-group{display:flex}[data-v-bdc3ab06] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-4ac8f18c] .radio-group{display:flex}[data-v-4ac8f18c] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-077b6bf4] .radio-group{display:flex}[data-v-077b6bf4] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-b9cb7bba] .radio-group{display:flex}[data-v-b9cb7bba] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-7d4cbfa3] .radio-group{display:flex}[data-v-7d4cbfa3] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-31d6e416] .yaml-editor{flex:1;min-height:200px}[data-v-31d6e416] .yaml-editor .code-mirror .CodeMirror{position:static;height:auto;min-height:200px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".close[data-v-5178a7e6]{top:10px;right:10px;padding:0;position:absolute}.disk[data-v-5178a7e6]{position:relative}.disk .secret-name[data-v-5178a7e6]{height:61px}.disk[data-v-5178a7e6]:not(:last-of-type){padding-bottom:10px;margin-bottom:30px}.flex[data-v-5178a7e6]{display:flex;justify-content:space-between}.badge-state[data-v-5178a7e6]{padding:2px 5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#node[data-v-467db875]{display:flex;flex-direction:column}#node[data-v-467db875],#node .content[data-v-467db875]{flex-grow:1}#node .wrapper[data-v-467db875]{position:relative}#node .nicOption[data-v-467db875]{display:flex;justify-content:space-between}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header[data-v-59bb2be6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".output{display:flex;flex-direction:column;flex-grow:1}.output .provider h1{display:inline-block}.output .box-container{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:0 -10px}@media only screen and (min-width:480px){.output .box-container .toggle-gradient-box{width:100%}}@media only screen and (min-width:768px){.output .box-container .toggle-gradient-box{width:calc(50% - 20px)}}@media only screen and (min-width:992px){.output .box-container .toggle-gradient-box{width:calc(33.33333% - 20px)}}@media only screen and (min-width:1281px){.output .box-container .toggle-gradient-box{width:calc(25% - 20px)}}.output .box-container .toggle-gradient-box{margin:10px;padding:10px;position:relative;border-radius:calc(var(--border-radius)*1.5)}.output .box-container .toggle-gradient-box:hover{box-shadow:0 0 30px var(--shadow);transition:box-shadow .1s ease-in-out;cursor:pointer}.output .box-container .toggle-gradient-box .side-label{transform:rotate(180deg);position:absolute;top:0;left:0;bottom:0;min-width:calc(var(--border-radius)*1.5);width:15px;border-top-right-radius:calc(var(--border-radius)*1.5);border-bottom-right-radius:calc(var(--border-radius)*1.5)}.output .box-container .toggle-gradient-box .side-label label{text-align:center;writing-mode:tb;height:100%;padding:0 2px;display:block;white-space:no-wrap;text-overflow:ellipsis}.output .box-container .toggle-gradient-box .logo{text-align:center;width:60px;height:60px;border-radius:calc(var(--border-radius)*2);overflow:hidden;background-color:#fff;display:inline-block;vertical-align:middle}.output .box-container .toggle-gradient-box .logo img{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}.output .box-container .toggle-gradient-box:hover{background-position:100%}.output .box-container .toggle-gradient-box .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:0;display:inline-block;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"h3[data-v-3585e2fe]{margin-top:2em}input[data-v-3585e2fe]{margin-top:1em}.route[real-mode=view] .label[data-v-3585e2fe]{color:var(--input-label)}button[data-v-3585e2fe]{margin-left:.5em}a[data-v-3585e2fe]:hover{text-decoration:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".remove-btn[data-v-17d6f3b0]{align-self:center}.trunk-span[data-v-17d6f3b0]{flex:5}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cronEditor[data-v-cab29070]{align-items:center;display:flex}.editCronBtn[data-v-cab29070]{margin-bottom:30px;margin-left:10px;height:60px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".edit-change[data-v-45d7bc4b]{align-items:center;display:flex}.edit-change>h5[data-v-45d7bc4b]{flex:1}[data-v-45d7bc4b] .edit-help code{padding:1px 5px}[data-v-45d7bc4b] .banner__content.closable{white-space:normal;word-break:break-word}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".column-headers .row.custom[data-v-f04994c6]{max-width:calc(100% - 75px)}.row[data-v-f04994c6]{align-items:center}.select[data-v-f04994c6]{max-width:480px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".custom-headers[data-v-e0dfa694]{align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-input.compact-input[data-v-76a78353]{padding:7px 10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-input.compact-input[data-v-1618b260]{padding:7px 10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-input.compact-input[data-v-6afc4f36]{padding:7px 10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#restore[data-v-78a029f1]{display:flex;flex-grow:1;flex-direction:column}#restore[data-v-78a029f1] .radio-group{display:flex}#restore[data-v-78a029f1] .radio-group .radio-container{margin-right:30px}#restore .content[data-v-78a029f1]{flex-grow:1}#restore .footer[data-v-78a029f1]{border-top:var(--header-border-size) solid var(--header-border);margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:10px 24px}#restore .footer[data-v-78a029f1] .spacer-small{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".kv-item.value>.unlabeled-select[data-v-64a57538]{height:40px;line-height:1}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#restore[data-v-68f0cfa3]{display:flex;flex-grow:1;flex-direction:column}#restore[data-v-68f0cfa3] .radio-group{display:flex}#restore[data-v-68f0cfa3] .radio-group .radio-container{margin-right:30px}#restore .content[data-v-68f0cfa3]{flex-grow:1}#restore .footer[data-v-68f0cfa3]{border-top:var(--header-border-size) solid var(--header-border);margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:10px 24px}#restore .footer[data-v-68f0cfa3] .spacer-small{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".section-divider[data-v-153488d4]{border:none;border-top:1px solid var(--border);margin:10px 0 20px}.custom-interface-header[data-v-153488d4]{margin-bottom:10px;font-weight:600}.custom-interface-row[data-v-153488d4]{align-items:flex-start}.interface-row[data-v-153488d4]{width:calc(100% - 90px);margin-bottom:10px}.nodes-row[data-v-153488d4]{align-items:flex-start}.custom-interface-add[data-v-153488d4]{display:flex;justify-content:flex-end;margin-top:10px}[data-v-153488d4] .nodes-row .array-list-select .box{grid-template-columns:minmax(0,1fr) auto;align-items:center}[data-v-153488d4] .nodes-row .array-list-select .box .remove{align-self:center}.custom-interface-primary-add[data-v-153488d4]{max-width:100%}.custom-interface-box[data-v-153488d4]{position:relative;width:100%;padding:20px;margin-bottom:5px}[data-v-153488d4] .custom-interface-list .box{grid-template-columns:1fr}.remove[data-v-153488d4]{position:absolute;top:10px;right:10px;z-index:1;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-590f4df4]{position:relative}.removeBtn[data-v-590f4df4]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dhcpOption-banner[data-v-13084858]{width:-moz-max-content;width:max-content}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-cff1ac6e],.pool-row[data-v-cff1ac6e]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.pool-headers.cidr[data-v-cff1ac6e],.pool-row.cidr[data-v-cff1ac6e]{grid-template-columns:41.75% 41.75% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-4bce4a2b],.pool-row[data-v-4bce4a2b]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.pool-headers.localConnectIP[data-v-4bce4a2b],.pool-row.localConnectIP[data-v-4bce4a2b]{grid-template-columns:41.75% 41.75% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".compat-matrix,.device-col{display:flex}.device-col{flex-direction:column;border-right:1px solid var(--border)}.device-col>*{border-bottom:1px solid var(--border)}.compat-cell{flex-basis:1em;padding:0 10px 0 10px}.compat-cell.has-device{background-color:var(--info-banner-bg)}.device-label,.node-label{display:flex;align-items:center;color:var(--input-label)}.node-label{padding:0 10px;justify-content:center}.blank-corner,.compat-cell,.device-label,.node-label{flex-basis:calc(2em + 10px)}.blank-corner{background:linear-gradient(to top right,#fff 0,#fff calc(50% - 1px),var(--body-text) 50%,#fff calc(50% + 1px),#fff 100%)}.blank-corner DIV.text-right{padding-left:80px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm-filesystem[data-v-0d9401e2]{padding:10px 0}.filesystem-row[data-v-0d9401e2]{border-bottom:1px solid var(--border);padding-bottom:15px}.remove-col[data-v-0d9401e2]{display:flex;align-items:center;justify-content:center}.remove-btn[data-v-0d9401e2]{padding:0}.pre-wrapper[data-v-0d9401e2]{position:relative}.pre-wrapper pre[data-v-0d9401e2]{padding-right:36px}.pre-wrapper .icon-btn[data-v-0d9401e2]{position:absolute;top:0;right:5px;padding:2px 4px;line-height:1}.pre-wrapper .icon-btn[data-v-0d9401e2]:active{background-color:var(--success)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-7c353956] .resource-xml{flex:1;display:flex;flex-direction:column}[data-v-7c353956] .resource-xml .xml-editor{flex:1;min-height:350px;font-family:monospace}[data-v-7c353956] .resource-xml .xml-editor .code-mirror .CodeMirror{min-height:350px}.xml[data-v-7c353956]{height:350px;overflow:auto}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#vm[data-v-b8e4d116] .vm-radio-group .radio-group{display:flex}#vm[data-v-b8e4d116] .vm-radio-group .radio-group .radio-container{margin-right:30px}#vm .restart[data-v-b8e4d116]{display:flex;justify-content:flex-end}#vm .banner-right[data-v-b8e4d116]{width:auto;display:flex;justify-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-4914b3a7]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center;grid-template-columns:40% 40% 15%}.pool-headers.show-project-and-cluster[data-v-4914b3a7]{grid-template-columns:25% 25% 25% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-row[data-v-4db6b05a]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center;grid-template-columns:40% 40% 15%}.pool-row.show-project-and-cluster[data-v-4db6b05a]{grid-template-columns:25% 25% 25% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-6a840725],.pool-row[data-v-6a840725]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.pool-headers.cidr[data-v-6a840725],.pool-row.cidr[data-v-6a840725]{grid-template-columns:41.75% 41.75% 15%}.pool-headers.range[data-v-6a840725],.pool-row.range[data-v-6a840725]{grid-template-columns:20% 20% 20% 20% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".listener-headers[data-v-602acdc3],.listener-row[data-v-602acdc3]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center;grid-template-columns:35% 15% 15% 15% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".title[data-v-ef4b96d4]{margin-bottom:10px}.title .read-from-file[data-v-ef4b96d4]{float:right}.ports-headers[data-v-ef4b96d4],.ports-row[data-v-ef4b96d4]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.ports-headers.show-protocol[data-v-ef4b96d4],.ports-row.show-protocol[data-v-ef4b96d4]{grid-template-columns:23% 23% 10% 15% 15% 10%}.ports-headers.show-protocol[data-v-ef4b96d4]:not(.show-node-port),.ports-row.show-protocol[data-v-ef4b96d4]:not(.show-node-port){grid-template-columns:31% 31% 10% 15% 10%}.ports-headers.show-node-port[data-v-ef4b96d4]:not(.show-protocol),.ports-row.show-node-port[data-v-ef4b96d4]:not(.show-protocol){grid-template-columns:28% 28% 15% 15% 10%}.ports-headers[data-v-ef4b96d4]{color:var(--input-label)}.toggle-host-ports[data-v-ef4b96d4]{color:var(--primary)}.remove BUTTON[data-v-ef4b96d4]{padding:0}.ports-row>div[data-v-ef4b96d4]{height:100%}.ports-row .port-protocol[data-v-ef4b96d4] .unlabeled-select .v-select.inline{margin-top:2px}.footer[data-v-ef4b96d4]{margin-top:10px;margin-left:5px}.footer .protip[data-v-ef4b96d4]{float:right;padding:5px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".network-row[data-v-6df4a4c4]{border:1px solid var(--border);padding:10px;border-radius:var(--border-radius);background:var(--body-bg)}.remove-btn-container[data-v-6df4a4c4]{display:flex;align-items:center;justify-content:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".section-divider[data-v-53cc9408]{border:none;border-top:1px solid var(--border);margin:10px 0 20px}.node-selector-box[data-v-53cc9408]{position:relative}.node-selector-box .remove[data-v-53cc9408]{position:absolute;top:10px;right:10px;z-index:1;padding:0}.underlay-conflict-warning[data-v-53cc9408]{display:inline-flex;align-items:center;gap:4px;margin-top:4px;color:var(--warning);font-size:13px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button[data-v-1750718a]{all:unset;height:0;position:relative;top:-35px;float:right;margin-right:7px;cursor:pointer}button .align-value[data-v-1750718a]{padding-top:7px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".network-policy-edit[data-v-7a1c4cde]{flex:auto;display:flex;flex-direction:column}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./DiskTags.vue?vue&type=template&id=6b2f75f1&scoped=true\"\nimport script from \"./DiskTags.vue?vue&type=script&lang=js\"\nexport * from \"./DiskTags.vue?vue&type=script&lang=js\"\n\nimport \"./DiskTags.vue?vue&type=style&index=0&id=6b2f75f1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b2f75f1\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./additional-ca.vue?vue&type=template&id=ce5d9238\"\nimport script from \"./additional-ca.vue?vue&type=script&lang=js\"\nexport * from \"./additional-ca.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./additional-guest-memory-overhead-ratio.vue?vue&type=template&id=26d86d02\"\nimport script from \"./additional-guest-memory-overhead-ratio.vue?vue&type=script&lang=js\"\nexport * from \"./additional-guest-memory-overhead-ratio.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./auto-rotate-rke2-certs.vue?vue&type=template&id=034d9714&scoped=true\"\nimport script from \"./auto-rotate-rke2-certs.vue?vue&type=script&lang=js\"\nexport * from \"./auto-rotate-rke2-certs.vue?vue&type=script&lang=js\"\n\nimport \"./auto-rotate-rke2-certs.vue?vue&type=style&index=0&id=034d9714&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-034d9714\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n
\n\n
\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n
\n \n
\n
\n \n\n\n","import { render } from \"./backup-target.vue?vue&type=template&id=4b7055bd&scoped=true\"\nimport script from \"./backup-target.vue?vue&type=script&lang=js\"\nexport * from \"./backup-target.vue?vue&type=script&lang=js\"\n\nimport \"./backup-target.vue?vue&type=style&index=0&id=4b7055bd&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b7055bd\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./cluster-pod-security-standard.vue?vue&type=template&id=2d41baa6\"\nimport script from \"./cluster-pod-security-standard.vue?vue&type=script&lang=js\"\nexport * from \"./cluster-pod-security-standard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./cluster-registration-url.vue?vue&type=template&id=6679b832\"\nimport script from \"./cluster-registration-url.vue?vue&type=script&lang=js\"\nexport * from \"./cluster-registration-url.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
{{ t('harvester.setting.containerdRegistry.mirrors.mirrors') }} \n
\n
\n \n \n \n\n \n
\n {}\"\n @update:value=\"update\"\n />\n
\n
\n\n \n {}\"\n @update:value=\"update\"\n />\n
\n\n \n {}\"\n @update:value=\"update\"\n />\n
\n \n
\n\n
\n {{ t('harvester.setting.containerdRegistry.mirrors.addMirror') }}\n \n\n
\n\n
{{ t('harvester.setting.containerdRegistry.configs.configs') }} \n
\n
\n \n \n \n\n \n\n \n\n \n\n \n \n
\n \n\n
\n {{ t('harvester.setting.containerdRegistry.configs.addConfig') }}\n \n
\n
\n \n\n\n","import { render } from \"./containerd-registry.vue?vue&type=template&id=d281fc5e&scoped=true\"\nimport script from \"./containerd-registry.vue?vue&type=script&lang=js\"\nexport * from \"./containerd-registry.vue?vue&type=script&lang=js\"\n\nimport \"./containerd-registry.vue?vue&type=style&index=0&id=d281fc5e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d281fc5e\"]])\n\nexport default __exports__","\n\n\n \n
\n \n \n \n\n \n
\n {}\"\n @update:value=\"update\"\n />\n
\n\n
\n {}\"\n @update:value=\"update\"\n />\n
\n\n
\n {}\"\n @update:value=\"update\"\n />\n
\n
\n \n\n
\n {{ t('generic.add') }}\n \n
\n \n\n\n","import { render } from \"./csi-driver-config.vue?vue&type=template&id=a4b4739a&scoped=true\"\nimport script from \"./csi-driver-config.vue?vue&type=script&lang=js\"\nexport * from \"./csi-driver-config.vue?vue&type=script&lang=js\"\n\nimport \"./csi-driver-config.vue?vue&type=style&index=0&id=a4b4739a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a4b4739a\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ errorMsg }}\n \n
\n \n \n \n\n \n
\n \n
\n\n
\n onValueChange(idx, val)\"\n @keydown.native.enter.prevent\n />\n
\n
\n \n\n
\n {{ t('generic.add') }}\n \n
\n \n\n\n","import { render } from \"./csi-online-expand-validation.vue?vue&type=template&id=0083bb1a&scoped=true\"\nimport script from \"./csi-online-expand-validation.vue?vue&type=script&lang=js\"\nexport * from \"./csi-online-expand-validation.vue?vue&type=script&lang=js\"\n\nimport \"./csi-online-expand-validation.vue?vue&type=style&index=0&id=0083bb1a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0083bb1a\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./default-vm-termination-grace-period-seconds.vue?vue&type=template&id=6850d3c8\"\nimport script from \"./default-vm-termination-grace-period-seconds.vue?vue&type=script&lang=js\"\nexport * from \"./default-vm-termination-grace-period-seconds.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./http-proxy.vue?vue&type=template&id=b3173be4\"\nimport script from \"./http-proxy.vue?vue&type=script&lang=js\"\nexport * from \"./http-proxy.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ parseError }}\n \n\n
\n
\n \n","import { render } from \"./instance-manager-resources.vue?vue&type=template&id=9b82f154\"\nimport script from \"./instance-manager-resources.vue?vue&type=script&lang=js\"\nexport * from \"./instance-manager-resources.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ parseError }}\n \n\n
\n
\n
\n
\n
\n
\n
\n {{ t(`harvester.setting.kubevirtMigration.${field}`) }} \n \n
\n
\n
\n \n\n\n","import { render } from \"./kubevirt-migration.vue?vue&type=template&id=24ae0fbe&scoped=true\"\nimport script from \"./kubevirt-migration.vue?vue&type=script&lang=js\"\nexport * from \"./kubevirt-migration.vue?vue&type=script&lang=js\"\n\nimport \"./kubevirt-migration.vue?vue&type=style&index=0&id=24ae0fbe&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24ae0fbe\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./ntp-servers.vue?vue&type=template&id=684a5255\"\nimport script from \"./ntp-servers.vue?vue&type=script&lang=js\"\nexport * from \"./ntp-servers.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./overcommit-config.vue?vue&type=template&id=e7c025b0\"\nimport script from \"./overcommit-config.vue?vue&type=script&lang=js\"\nexport * from \"./overcommit-config.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./rancher-cluster.vue?vue&type=template&id=c0399262&scoped=true\"\nimport script from \"./rancher-cluster.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-cluster.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-cluster.vue?vue&type=style&index=0&id=c0399262&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c0399262\"]])\n\nexport default __exports__","\n\n\n \n
\n \n \n
\n\n
\n
\n \n \n
\n \n\n \n\n \n\n \n\n \n \n \n
\n {{ t('harvester.setting.storageNetwork.exclude.label') }}\n
\n
\n \n \n \n \n
\n \n \n \n
\n \n","import { render } from \"./rwx-network.vue?vue&type=template&id=b93b4740\"\nimport script from \"./rwx-network.vue?vue&type=script&lang=js\"\nexport * from \"./rwx-network.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t('harvester.setting.sslCertificates.publicCertificate') }}\n
\n\n
\n \n {{ publicCertificateFileName ? publicCertificateFileName : t('harvester.generic.noFileChosen') }} \n
\n
\n
\n\n
\n
\n
\n {{ t('harvester.setting.sslCertificates.privateKey') }}\n
\n\n
\n \n {{ privateKeyFileName ? privateKeyFileName : t('harvester.generic.noFileChosen') }} \n
\n
\n
\n\n
\n
\n
\n {{ t('harvester.setting.sslCertificates.ca') }}\n
\n\n
\n \n {{ caFileName ? caFileName : t('harvester.generic.noFileChosen') }} \n
\n
\n
\n
\n \n\n\n","import { render } from \"./ssl-certificates.vue?vue&type=template&id=27a09764&scoped=true\"\nimport script from \"./ssl-certificates.vue?vue&type=script&lang=js\"\nexport * from \"./ssl-certificates.vue?vue&type=script&lang=js\"\n\nimport \"./ssl-certificates.vue?vue&type=style&index=0&id=27a09764&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-27a09764\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./ssl-parameters.vue?vue&type=template&id=6da8c495\"\nimport script from \"./ssl-parameters.vue?vue&type=script&lang=js\"\nexport * from \"./ssl-parameters.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n \n\n
\n\n
\n
\n\n
\n
\n
\n\n
\n
\n \n \n\n
\n \n \n
\n {{ t('harvester.setting.storageNetwork.exclude.label') }}\n
\n
\n \n \n \n \n
\n \n \n
\n
\n \n","import { render } from \"./storage-network.vue?vue&type=template&id=2cd217c2\"\nimport script from \"./storage-network.vue?vue&type=script&lang=js\"\nexport * from \"./storage-network.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./support-bundle-image.vue?vue&type=template&id=a914459c\"\nimport script from \"./support-bundle-image.vue?vue&type=script&lang=js\"\nexport * from \"./support-bundle-image.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./support-bundle-namespaces.vue?vue&type=template&id=30c22bd6\"\nimport script from \"./support-bundle-namespaces.vue?vue&type=script&lang=js\"\nexport * from \"./support-bundle-namespaces.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
{{ t('harvester.setting.upgrade.imagePreloadStrategy') }} \n
\n
\n
{{ t('harvester.setting.upgrade.restoreVM') }} \n
\n
\n {{ t('harvester.setting.upgrade.nodeUpgradeOption') }} \n \n \n
\n
\n {{ errors[0] }}\n
\n
\n
\n
\n \n\n\n","import { render } from \"./upgrade-config.vue?vue&type=template&id=61439304&scoped=true\"\nimport script from \"./upgrade-config.vue?vue&type=script&lang=js\"\nexport * from \"./upgrade-config.vue?vue&type=script&lang=js\"\n\nimport \"./upgrade-config.vue?vue&type=style&index=0&id=61439304&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61439304\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./vm-force-reset-policy.vue?vue&type=template&id=00b18892&scoped=true\"\nimport script from \"./vm-force-reset-policy.vue?vue&type=script&lang=js\"\nexport * from \"./vm-force-reset-policy.vue?vue&type=script&lang=js\"\n\nimport \"./vm-force-reset-policy.vue?vue&type=style&index=0&id=00b18892&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00b18892\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ errorMsg }}\n \n
\n
\n \n \n \n \n \n
\n \n","import { render } from \"./vm-migration-network.vue?vue&type=template&id=ddb434ee\"\nimport script from \"./vm-migration-network.vue?vue&type=script&lang=js\"\nexport * from \"./vm-migration-network.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n\n \n
\n \n \n\n \n \n \n \n \n \n\n","import { render } from \"./RestartVMDialog.vue?vue&type=template&id=0f53a5eb&scoped=true\"\nimport script from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\nexport * from \"./RestartVMDialog.vue?vue&type=script&lang=js\"\n\nimport \"./RestartVMDialog.vue?vue&type=style&index=0&id=0f53a5eb&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f53a5eb\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n \n \n \n
\n \n \n \n \n","import { render } from \"./devices.harvesterhci.io.migconfiguration.vue?vue&type=template&id=800ef0c6\"\nimport script from \"./devices.harvesterhci.io.migconfiguration.vue?vue&type=script&lang=js\"\nexport * from \"./devices.harvesterhci.io.migconfiguration.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import script from \"./forklift.konveyor.io.provider.vue?vue&type=script&lang=js\"\nexport * from \"./forklift.konveyor.io.provider.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./generic.vue?vue&type=template&id=24a677c4&scoped=true\"\nimport script from \"./generic.vue?vue&type=script&lang=js\"\nexport * from \"./generic.vue?vue&type=script&lang=js\"\n\nimport \"./generic.vue?vue&type=style&index=0&id=24a677c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24a677c4\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./harvester-seeder.vue?vue&type=template&id=4b980a18&scoped=true\"\nimport script from \"./harvester-seeder.vue?vue&type=script&lang=js\"\nexport * from \"./harvester-seeder.vue?vue&type=script&lang=js\"\n\nimport \"./harvester-seeder.vue?vue&type=style&index=0&id=4b980a18&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b980a18\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=639fa9c4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./nvidia-driver-toolkit.vue?vue&type=template&id=365beeb4&scoped=true\"\nimport script from \"./nvidia-driver-toolkit.vue?vue&type=script&lang=js\"\nexport * from \"./nvidia-driver-toolkit.vue?vue&type=script&lang=js\"\n\nimport \"./nvidia-driver-toolkit.vue?vue&type=style&index=0&id=365beeb4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-365beeb4\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./pcidevices-controller.vue?vue&type=template&id=bdc3ab06&scoped=true\"\nimport script from \"./pcidevices-controller.vue?vue&type=script&lang=js\"\nexport * from \"./pcidevices-controller.vue?vue&type=script&lang=js\"\n\nimport \"./pcidevices-controller.vue?vue&type=style&index=0&id=bdc3ab06&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bdc3ab06\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./rancher-logging.vue?vue&type=template&id=4ac8f18c&scoped=true\"\nimport script from \"./rancher-logging.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-logging.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-logging.vue?vue&type=style&index=0&id=4ac8f18c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ac8f18c\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n
\n \n \n \n \n
\n
\n {{ t('monitoring.prometheus.config.resourceLimits') }}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n
\n \n \n \n \n \n \n\n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n
\n \n\n \n \n \n \n\n\n","import { render } from \"./rancher-monitoring.vue?vue&type=template&id=077b6bf4&scoped=true\"\nimport script from \"./rancher-monitoring.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-monitoring.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-monitoring.vue?vue&type=style&index=0&id=077b6bf4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-077b6bf4\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./rancher-vcluster.vue?vue&type=template&id=b9cb7bba&scoped=true\"\nimport script from \"./rancher-vcluster.vue?vue&type=script&lang=js\"\nexport * from \"./rancher-vcluster.vue?vue&type=script&lang=js\"\n\nimport \"./rancher-vcluster.vue?vue&type=style&index=0&id=b9cb7bba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b9cb7bba\"]])\n\nexport default __exports__","\n\n\n \n \n \n\n \n
\n
\n\n
\n
{{ t('harvester.addons.vmImport.titles.pvc') }} \n
\n
\n \n \n \n\n\n","import { render } from \"./vm-import-controller.vue?vue&type=template&id=7d4cbfa3&scoped=true\"\nimport script from \"./vm-import-controller.vue?vue&type=script&lang=js\"\nexport * from \"./vm-import-controller.vue?vue&type=script&lang=js\"\n\nimport \"./vm-import-controller.vue?vue&type=style&index=0&id=7d4cbfa3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7d4cbfa3\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n
\n\n \n \n
\n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.cloudtemplate.vue?vue&type=template&id=31d6e416&scoped=true\"\nimport script from \"./harvesterhci.io.cloudtemplate.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.cloudtemplate.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.cloudtemplate.vue?vue&type=style&index=0&id=31d6e416&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-31d6e416\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n {{ t('harvester.host.disk.conditions') }}:\n \n \n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n {}\"\n />\n
\n
\n \n \n
\n
\n {}\"\n />\n
\n
\n
\n \n {{ t('harvester.host.disk.lvmVolumeGroup.label') }}\n \n\n \n {}\"\n />\n \n \n
\n \n\n\n","import { render } from \"./HarvesterDisk.vue?vue&type=template&id=5178a7e6&scoped=true\"\nimport script from \"./HarvesterDisk.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterDisk.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterDisk.vue?vue&type=style&index=0&id=5178a7e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5178a7e6\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n \n \n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n","import { render } from \"./HarvesterHugepages.vue?vue&type=template&id=295b19e3\"\nimport script from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHugepages.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
0\">\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n \n {{ t('harvester.seeder.inventory.secret.create.title') }}\n \n\n \n \n\n \n\n \n \n \n
\n
\n \n","import { render } from \"./HarvesterSeeder.vue?vue&type=template&id=a2a1671e\"\nimport script from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterSeeder.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n \n
\n
\n
\n \n \n\n \n \n \n \n \n \n \n \n \n addDisk(e.value)\"\n @dd-button-action=\"ddButtonAction\"\n >\n \n \n \n {{ option.label }}\n \n \n \n {{ option.label }}\n
\n \n \n \n \n onRemove(scope)\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n
\n\n \n
\n \n\n","import { render } from \"./index.vue?vue&type=template&id=467db875&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=467db875&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-467db875\"]])\n\nexport default __exports__","\n\n\n \n \n\n \n\n \n \n \n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.keypair.vue?vue&type=template&id=59bb2be6&scoped=true\"\nimport script from \"./harvesterhci.io.keypair.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.keypair.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.keypair.vue?vue&type=style&index=0&id=59bb2be6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-59bb2be6\"]])\n\nexport default __exports__","\n","import script from \"./harvesterhci.io.logging.clusterflow.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.clusterflow.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n","import script from \"./harvesterhci.io.logging.clusteroutput.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.clusteroutput.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n \n \n","import { render } from \"./harvesterhci.io.logging.flow.vue?vue&type=template&id=3b39f8e8\"\nimport script from \"./harvesterhci.io.logging.flow.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.flow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
errors=e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n 1\"\n color=\"info\"\n >\n {{ t('logging.output.tips.singleProvider') }}\n \n \n {{ t('logging.output.tips.multipleProviders') }}\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n \n\n\n","import { render } from \"./harvesterhci.io.logging.output.vue?vue&type=template&id=32f72914\"\nimport script from \"./harvesterhci.io.logging.output.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.logging.output.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.logging.output.vue?vue&type=style&index=0&id=32f72914&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n\n \n \n \n \n \n \n \n \n \n {{ t('monitoring.receiver.addReceiver') }}\n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=3585e2fe&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3585e2fe&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3585e2fe\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n \n\n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n {{ t('harvester.fields.remove') }}\n \n
\n
\n
\n
\n {{ t('harvester.vlanStatus.vlanConfig.vlanTrunk.add') }}\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=template&id=17d6f3b0&scoped=true\"\nimport script from \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.networkattachmentdefinition.vue?vue&type=style&index=0&id=17d6f3b0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17d6f3b0\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n
\n \n \n \n {{ t('harvester.backup.message.errorTip.suffix') }} {{ errorMessage }}\n \n \n \n
\n \n
\n
\n
\n \n \n \n \n \n {{ t('harvester.schedule.cron.editButton') }}\n \n \n
\n \n \n \n \n \n \n\n\n","import cronstrue from 'cronstrue';\n\nexport function isCronValid(schedule = '') {\n try {\n const hint = cronstrue.toString(schedule);\n\n return !!hint;\n } catch (e) {\n return false;\n }\n}\n","import { render } from \"./harvesterhci.io.schedulevmbackup.vue?vue&type=template&id=cab29070&scoped=true\"\nimport script from \"./harvesterhci.io.schedulevmbackup.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.schedulevmbackup.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.schedulevmbackup.vue?vue&type=style&index=0&id=cab29070&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cab29070\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./harvesterhci.io.secret.vue?vue&type=template&id=646e34d2\"\nimport script from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.secret.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n @finish=\"saveSettings\"\n @cancel=\"done\"\n >\n \n\n \n\n \n
\n \n {{ t('advancedSettings.edit.useDefault') }}\n \n \n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n\n\n","import { render } from \"./harvesterhci.io.setting.vue?vue&type=template&id=45d7bc4b&scoped=true\"\nimport script from \"./harvesterhci.io.setting.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.setting.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.setting.vue?vue&type=style&index=0&id=45d7bc4b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-45d7bc4b\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n \n {{ t('harvester.storage.cdiSettings.volumeModeAccessModes.volumeMode') }}\n \n \n {{ t('harvester.storage.cdiSettings.volumeModeAccessModes.accessModes.label') }}\n \n
\n
\n \n\n \n \n \n \n\n \n\n \n\n \n \n\n\n","import { render } from \"./CDISettings.vue?vue&type=template&id=f04994c6&scoped=true\"\nimport script from \"./CDISettings.vue?vue&type=script&lang=js\"\nexport * from \"./CDISettings.vue?vue&type=script&lang=js\"\n\nimport \"./CDISettings.vue?vue&type=style&index=0&id=f04994c6&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f04994c6\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n errors=e\"\r\n @finish=\"save\"\r\n @cancel=\"done\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ t('generic.key') }}\r\n * \r\n
\r\n
\r\n {{ t('generic.value') }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render } from \"./index.vue?vue&type=template&id=e0dfa694&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e0dfa694&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e0dfa694\"]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n","import { render } from \"./custom.vue?vue&type=template&id=28c88542\"\nimport script from \"./custom.vue?vue&type=script&lang=js\"\nexport * from \"./custom.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.nodeSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.diskSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./driver.longhorn.io_v1.vue?vue&type=template&id=76a78353&scoped=true\"\nimport script from \"./driver.longhorn.io_v1.vue?vue&type=script&lang=js\"\nexport * from \"./driver.longhorn.io_v1.vue?vue&type=script&lang=js\"\n\nimport \"./driver.longhorn.io_v1.vue?vue&type=style&index=0&id=76a78353&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-76a78353\"]])\n\nexport default __exports__","\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.nodeSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.diskSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./driver.longhorn.io_v2.vue?vue&type=template&id=1618b260&scoped=true\"\nimport script from \"./driver.longhorn.io_v2.vue?vue&type=script&lang=js\"\nexport * from \"./driver.longhorn.io_v2.vue?vue&type=script&lang=js\"\n\nimport \"./driver.longhorn.io_v2.vue?vue&type=style&index=0&id=1618b260&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1618b260\"]])\n\nexport default __exports__","\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.diskSelector.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ t('harvester.storage.parameters.lvmVolumeGroup.no-options', null, true) }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","import { render } from \"./lvm.driver.harvesterhci.io.vue?vue&type=template&id=6afc4f36&scoped=true\"\nimport script from \"./lvm.driver.harvesterhci.io.vue?vue&type=script&lang=js\"\nexport * from \"./lvm.driver.harvesterhci.io.vue?vue&type=script&lang=js\"\n\nimport \"./lvm.driver.harvesterhci.io.vue?vue&type=style&index=0&id=6afc4f36&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6afc4f36\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n \n
\n \n\n\n","import { render } from \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=template&id=78a029f1&scoped=true\"\nimport script from \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.virtualmachinebackup.vue?vue&type=style&index=0&id=78a029f1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-78a029f1\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n
\n
\n\n
\n\n
\n
\n\n
\n \n {{ t('harvester.image.uploadFile') }}\n \n \n \n\n
\n \n {{ uploadFileName }}\n
\n
\n\n
\n\n
\n
\n
\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./harvesterhci.io.virtualmachineimage.vue?vue&type=template&id=64a57538&scoped=true\"\nimport script from \"./harvesterhci.io.virtualmachineimage.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.virtualmachineimage.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.virtualmachineimage.vue?vue&type=style&index=0&id=64a57538&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-64a57538\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n\n \n \n \n\n \n \n
\n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n\n \n\n \n\n \n\n
\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n \n","import { render } from \"./harvesterhci.io.virtualmachinetemplateversion.vue?vue&type=template&id=00231130\"\nimport script from \"./harvesterhci.io.virtualmachinetemplateversion.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.virtualmachinetemplateversion.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n\n
\n\n
\n\n
\n\n
\n
\n\n \n
\n \n\n\n","import { render } from \"./harvesterhci.io.vmsnapshot.vue?vue&type=template&id=68f0cfa3&scoped=true\"\nimport script from \"./harvesterhci.io.vmsnapshot.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.vmsnapshot.vue?vue&type=script&lang=js\"\n\nimport \"./harvesterhci.io.vmsnapshot.vue?vue&type=style&index=0&id=68f0cfa3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-68f0cfa3\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n\n \n\n \n\n \n\n \n {{ t('harvester.volume.longhorn.disableResize') }} \n \n\n \n \n
\n \n {{ showAdvanced ? t('harvester.volume.hideAdvanced') : t('harvester.volume.showAdvanced') }}\n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./harvesterhci.io.volume.vue?vue&type=template&id=040d382a\"\nimport script from \"./harvesterhci.io.volume.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.volume.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n
errors=e\"\n >\n \n \n \n \n \n \n \n \n \n
\n \n","import { render } from \"./harvesterhci.io.volumesnapshot.vue?vue&type=template&id=9eaa880e\"\nimport script from \"./harvesterhci.io.volumesnapshot.vue?vue&type=script&lang=js\"\nexport * from \"./harvesterhci.io.volumesnapshot.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.iptablesdnatrule.vue?vue&type=template&id=0036c0c0\"\nimport script from \"./kubeovn.io.iptablesdnatrule.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.iptablesdnatrule.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.iptableseip.vue?vue&type=template&id=55ccd778\"\nimport script from \"./kubeovn.io.iptableseip.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.iptableseip.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.iptablessnatrule.vue?vue&type=template&id=84b22d1c\"\nimport script from \"./kubeovn.io.iptablessnatrule.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.iptablessnatrule.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n\n \n\n \n \n \n \n {{ t('harvester.providerNetwork.customInterfaces.addLabel') }}\n \n
\n \n\n \n \n
\n {{ t('harvester.providerNetwork.customInterfaces.interface.label') }}\n
\n
\n {{ t('harvester.providerNetwork.customInterfaces.nodes.label') }}\n
\n
\n \n\n \n \n \n \n \n\n \n
\n
\n
\n {{ t('harvester.providerNetwork.customInterfaces.interface.label') }}\n \n \n \n
\n\n
\n
\n
\n \n \n \n {{ t('harvester.providerNetwork.customInterfaces.nodes.addLabel') }}\n \n
\n \n \n
\n
\n
\n \n \n \n \n\n \n \n \n \n \n \n\n\n","import { render } from \"./kubeovn.io.providernetwork.vue?vue&type=template&id=153488d4&scoped=true\"\nimport script from \"./kubeovn.io.providernetwork.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.providernetwork.vue?vue&type=script&lang=js\"\n\nimport \"./kubeovn.io.providernetwork.vue?vue&type=style&index=0&id=153488d4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-153488d4\"]])\n\nexport default __exports__","\n\n\n \n
0\"\n color=\"info\"\n >\n \n \n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n \n\n\n","import { render } from \"./AccessControlList.vue?vue&type=template&id=590f4df4&scoped=true\"\nimport script from \"./AccessControlList.vue?vue&type=script&lang=js\"\nexport * from \"./AccessControlList.vue?vue&type=script&lang=js\"\n\nimport \"./AccessControlList.vue?vue&type=style&index=0&id=590f4df4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-590f4df4\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n
\n {{ t('harvester.subnet.allowSubnet.label') }}\n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n {{ t('harvester.setting.storageNetwork.exclude.label') }}\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=13084858&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=13084858&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-13084858\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.vlan.vue?vue&type=template&id=34aa1f3c\"\nimport script from \"./kubeovn.io.vlan.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.vlan.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n \n
\n
\n \n
\n
\n \n {{ row.cidr }}\n \n \n
\n
\n \n {{ row.nextHopIP }}\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n\n\n","import { render } from \"./StaticRoutes.vue?vue&type=template&id=cff1ac6e&scoped=true\"\nimport script from \"./StaticRoutes.vue?vue&type=script&lang=js\"\nexport * from \"./StaticRoutes.vue?vue&type=script&lang=js\"\n\nimport \"./StaticRoutes.vue?vue&type=style&index=0&id=cff1ac6e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cff1ac6e\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n
\n \n {{ row.localConnectIP }}\n \n \n
\n
\n \n {{ row.remoteVpc }}\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n\n\n","import { render } from \"./VpcPeerings.vue?vue&type=template&id=4bce4a2b&scoped=true\"\nimport script from \"./VpcPeerings.vue?vue&type=script&lang=js\"\nexport * from \"./VpcPeerings.vue?vue&type=script&lang=js\"\n\nimport \"./VpcPeerings.vue?vue&type=style&index=0&id=4bce4a2b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4bce4a2b\"]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=64234cf0\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n \n \n \n \n","import { render } from \"./kubeovn.io.vpcnatgateway.vue?vue&type=template&id=19cc0e2a\"\nimport script from \"./kubeovn.io.vpcnatgateway.vue?vue&type=script&lang=js\"\nexport * from \"./kubeovn.io.vpcnatgateway.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t('harvester.devices.matrixDeviceClaimName') }}\n
\n
{{ t('harvester.devices.matrixHostName') }}
\n
\n
\n {{ nodeName }} \n
\n
\n
\n
\n {{ deviceCRD.metadata.name }}\n
\n
\n
\n
\n \n\n\n","import { render } from \"./CompatibilityMatrix.vue?vue&type=template&id=3ec20e2a\"\nimport script from \"./CompatibilityMatrix.vue?vue&type=script&lang=js\"\nexport * from \"./CompatibilityMatrix.vue?vue&type=script&lang=js\"\n\nimport \"./CompatibilityMatrix.vue?vue&type=style&index=0&id=3ec20e2a&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n {{ fetchError }}\n \n \n
\n \n","import { render } from \"./VirtualMachineCpuModel.vue?vue&type=template&id=fd9dbe24\"\nimport script from \"./VirtualMachineCpuModel.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineCpuModel.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.virtualMachine.filesystem.description') }}\n
\n\n
\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n {{ t('generic.remove') }}\n \n
\n
\n
\n\n
0 && mode === 'create'\"\n color=\"warning\"\n class=\"mt-10\"\n >\n \n
\n
\n
{{ allMountCommands }} \n
\n
\n
\n \n\n
\n {{ t('harvester.virtualMachine.filesystem.add') }}\n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=0d9401e2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0d9401e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0d9401e2\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n 0\"\n color=\"info\"\n >\n \n \n
\n
\n
\n \n
\n \n \n {{ option.value }} ({{ option.displayLabel }}) \n \n \n
\n
\n \n
\n Compatible hosts:\n \n {{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }} \n
\n
\n \n {{ t('harvester.pci.impossibleSelection') }}\n
\n {showMatrix = !showMatrix; e.target.blur()}\"\n >\n {{ showMatrix ? t('harvester.pci.hideCompatibility') : t('harvester.pci.showCompatibility') }}\n \n \n \n
\n
\n \n","import { render } from \"./index.vue?vue&type=template&id=98ac7250\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./VirtualMachineReserved.vue?vue&type=template&id=d03ca8f8\"\nimport script from \"./VirtualMachineReserved.vue?vue&type=script&lang=js\"\nexport * from \"./VirtualMachineReserved.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n 0\"\n color=\"info\"\n >\n \n \n
\n
\n
\n \n
\n \n \n {{ option.value }} ({{ option.displayLabel }}) \n \n \n
\n
\n \n
\n Compatible hosts:\n \n {{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }} \n
\n
\n \n {{ t('harvester.usb.impossibleSelection') }}\n
\n {showMatrix = !showMatrix; e.target.blur()}\"\n >\n {{ showMatrix ? t('harvester.usb.hideCompatibility') : t('harvester.usb.showCompatibility') }}\n \n \n \n
\n
\n \n","import { render } from \"./index.vue?vue&type=template&id=bba6151a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n 0\"\n color=\"info\"\n >\n \n \n
\n
\n
\n \n
\n \n \n {{ option.value }} \n \n \n
\n
\n \n
\n Compatible hosts:\n \n {{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }} \n
\n
\n \n {{ t('harvester.vgpu.impossibleSelection') }}\n
\n \n
\n
\n \n","import { render } from \"./index.vue?vue&type=template&id=674e274c\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.virtualMachine.sysprep.title') }}\n \n
\n \n
\n\n \n
\n\n \n
\n
\n \n {{ xmlContentValidationError }}\n \n\n
\n \n
\n
\n\n
\n \n {{ t('harvester.virtualMachine.sysprep.createNewTitle') }}\n \n\n \n {}\"\n />\n\n \n \n \n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=7c353956&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7c353956&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7c353956\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n\n \n\n \n\n \n\n \n \n \n\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n {{ t('harvester.virtualMachine.cpuPinning.restartVMMessage') }}\n \n \n \n \n\n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=b8e4d116&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=b8e4d116&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b8e4d116\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('harvester.ipPool.scope.label') }}\n \n
\n \n
\n \n\n\n","import { render } from \"./Priority.vue?vue&type=template&id=4914b3a7&scoped=true\"\nimport script from \"./Priority.vue?vue&type=script&lang=js\"\nexport * from \"./Priority.vue?vue&type=script&lang=js\"\n\nimport \"./Priority.vue?vue&type=style&index=0&id=4914b3a7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4914b3a7\"]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ row.project }}\n \n \n
\n
\n \n {{ row.namespace }}\n \n \n
\n
\n \n {{ row.guestCluster }}\n \n \n
\n
\n \n \n \n
\n
\n \n\n\n","import { render } from \"./PriorityRow.vue?vue&type=template&id=4db6b05a&scoped=true\"\nimport script from \"./PriorityRow.vue?vue&type=script&lang=js\"\nexport * from \"./PriorityRow.vue?vue&type=script&lang=js\"\n\nimport \"./PriorityRow.vue?vue&type=style&index=0&id=4db6b05a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4db6b05a\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./Range.vue?vue&type=template&id=6a840725&scoped=true\"\nimport script from \"./Range.vue?vue&type=script&lang=js\"\nexport * from \"./Range.vue?vue&type=script&lang=js\"\n\nimport \"./Range.vue?vue&type=style&index=0&id=6a840725&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a840725\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./Selector.vue?vue&type=template&id=3d16d01e\"\nimport script from \"./Selector.vue?vue&type=script&lang=js\"\nexport * from \"./Selector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=e176b65a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./HealthCheck.vue?vue&type=template&id=3bd3310d\"\nimport script from \"./HealthCheck.vue?vue&type=script&lang=js\"\nexport * from \"./HealthCheck.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n \n {{ row.name }}\n \n \n
\n
\n \n {{ row.protocol }}\n \n \n
\n
\n \n {{ row.port }}\n \n \n
\n
\n {{ row.backendPort }} \n \n
\n
\n \n \n \n
\n
\n
\n \n
\n \n\n\n","import { render } from \"./Listeners.vue?vue&type=template&id=602acdc3&scoped=true\"\nimport script from \"./Listeners.vue?vue&type=script&lang=js\"\nexport * from \"./Listeners.vue?vue&type=script&lang=js\"\n\nimport \"./Listeners.vue?vue&type=style&index=0&id=602acdc3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-602acdc3\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=ef4b96d4&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=ef4b96d4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ef4b96d4\"]])\n\nexport default __exports__","\n\n errors=e\"\n @finish=\"save\"\n @cancel=\"done\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n","import { render } from \"./management.cattle.io.project.vue?vue&type=template&id=7f5a52dc\"\nimport script from \"./management.cattle.io.project.vue?vue&type=script&lang=js\"\nexport * from \"./management.cattle.io.project.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n \n","import { render } from \"./migration.harvesterhci.io.openstacksource.vue?vue&type=template&id=0552dc6a\"\nimport script from \"./migration.harvesterhci.io.openstacksource.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.openstacksource.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n\n \n\n \n \n\n \n \n \n \n \n \n","import { render } from \"./migration.harvesterhci.io.ovasource.vue?vue&type=template&id=dad41584\"\nimport script from \"./migration.harvesterhci.io.ovasource.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.ovasource.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n\n \n \n\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n {{ t('harvester.addons.vmImport.actions.remove') }}\n \n
\n
\n
\n \n {{ t('harvester.addons.vmImport.actions.addNetwork') }}\n \n \n\n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=template&id=6df4a4c4&scoped=true\"\nimport script from \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=script&lang=js\"\n\nimport \"./migration.harvesterhci.io.virtualmachineimport.vue?vue&type=style&index=0&id=6df4a4c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6df4a4c4\"]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n\n \n \n \n \n\n \n \n\n \n
\n
\n\n
\n Note: A new Kubernetes Secret will be created to store these credentials.\n
\n
\n\n \n \n \n \n \n","import { render } from \"./migration.harvesterhci.io.vmwaresource.vue?vue&type=template&id=4ffcc8d4\"\nimport script from \"./migration.harvesterhci.io.vmwaresource.vue?vue&type=script&lang=js\"\nexport * from \"./migration.harvesterhci.io.vmwaresource.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors=e\"\n >\n \n \n \n \n \n \n \n \n","import { render } from \"./index.vue?vue&type=template&id=3f1cf506\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n errors = e\"\n >\n \n\n \n \n \n\n \n \n\n \n
\n \n \n \n \n \n \n \n {{ t('harvester.hostNetworkConfig.underlay.conflict', { name: underlayConflict.nameDisplay || underlayConflict.id }) }}\n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ t('harvester.hostNetworkConfig.nodeSelector.addButton') }}\n \n \n \n \n \n \n\n\n","\n\n\n \n \n","import { render } from \"./HarvesterNodeSelector.vue?vue&type=template&id=90c8c984\"\nimport script from \"./HarvesterNodeSelector.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterNodeSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=template&id=53cc9408&scoped=true\"\nimport script from \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=script&lang=js\"\nexport * from \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=script&lang=js\"\n\nimport \"./network.harvesterhci.io.hostnetworkconfig.vue?vue&type=style&index=0&id=53cc9408&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-53cc9408\"]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n \n \n
\n \n \n
\n \n","import { render } from \"./NodeSelector.vue?vue&type=template&id=912808be\"\nimport script from \"./NodeSelector.vue?vue&type=script&lang=js\"\nexport * from \"./NodeSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n errors=e\"\n >\n \n\n \n \n \n \n \n\n \n \n\n \n\n \n {{ t('harvester.vlanConfig.titles.bondOptions') }}\n \n \n\n \n {{ t('harvester.vlanConfig.titles.attributes') }}\n \n \n \n \n \n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=1750718a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1750718a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1750718a\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n
\n \n\n\n","import { render } from \"./networking.k8s.io.networkpolicy.vue?vue&type=template&id=7a1c4cde&scoped=true\"\nimport script from \"./networking.k8s.io.networkpolicy.vue?vue&type=script&lang=js\"\nexport * from \"./networking.k8s.io.networkpolicy.vue?vue&type=script&lang=js\"\n\nimport \"./networking.k8s.io.networkpolicy.vue?vue&type=style&index=0&id=7a1c4cde&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7a1c4cde\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".migration-field[data-v-24ae0fbe]{display:flex;flex-direction:column;gap:12px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-61439304]{color:#d9534f;margin-top:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tag[data-v-6b2f75f1]{border:1px solid var(--primary);border-radius:var(--border-radius);box-sizing:border-box;margin:0;padding:0;font-size:14px;line-height:20px;list-style:none;display:inline-block;height:auto;margin-inline-end:8px;padding-inline:7px;white-space:nowrap;background:var(--accent-btn);opacity:1;text-align:start;color:var(--link);margin-bottom:10px;margin-right:8px;padding-top:8px;padding-bottom:8px}.tag i[data-v-6b2f75f1],.tag.add[data-v-6b2f75f1]{cursor:pointer}.tag.add[data-v-6b2f75f1]{border-style:dashed}.tag.add[data-v-6b2f75f1],.tag.input[data-v-6b2f75f1]{background:var(--body-bg)}.tag.input[data-v-6b2f75f1]{border:none;border-radius:none;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-034d9714] .radio-group{display:flex}[data-v-034d9714] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"p[data-v-4b7055bd]{display:flex;align-items:center}.icon-h-question[data-v-4b7055bd]{font-size:24px}.tip[data-v-4b7055bd]{font-size:15px}.goCA[data-v-4b7055bd]{margin:0 3px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-d281fc5e]{position:relative;padding-top:40px}.remove[data-v-d281fc5e]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-a4b4739a]{position:relative;padding-top:40px}.remove[data-v-a4b4739a]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-0083bb1a]{position:relative;padding-top:40px}.remove[data-v-0083bb1a]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-c0399262] .yaml-editor{flex:1;min-height:540px}[data-v-c0399262] .yaml-editor .code-mirror .CodeMirror{position:static;height:auto;min-height:540px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".chooseFile[data-v-27a09764]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-00b18892] .radio-group{display:flex}[data-v-00b18892] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".restart-modal[data-v-0f53a5eb]{z-index:45}.prompt-restart[data-v-0f53a5eb]{margin:0}.bottom[data-v-0f53a5eb]{display:flex;flex-direction:column;flex:1}.bottom .banner[data-v-0f53a5eb]{margin-top:0}.bottom .buttons[data-v-0f53a5eb]{display:flex;justify-content:flex-end;width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-24a677c4] .radio-group{display:flex}[data-v-24a677c4] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-4b980a18] .radio-group{display:flex}[data-v-4b980a18] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-365beeb4] .radio-group{display:flex}[data-v-365beeb4] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-bdc3ab06] .radio-group{display:flex}[data-v-bdc3ab06] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-4ac8f18c] .radio-group{display:flex}[data-v-4ac8f18c] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-077b6bf4] .radio-group{display:flex}[data-v-077b6bf4] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-b9cb7bba] .radio-group{display:flex}[data-v-b9cb7bba] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-7d4cbfa3] .radio-group{display:flex}[data-v-7d4cbfa3] .radio-group .radio-container{margin-right:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-31d6e416] .yaml-editor{flex:1;min-height:200px}[data-v-31d6e416] .yaml-editor .code-mirror .CodeMirror{position:static;height:auto;min-height:200px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".close[data-v-5178a7e6]{top:10px;right:10px;padding:0;position:absolute}.disk[data-v-5178a7e6]{position:relative}.disk .secret-name[data-v-5178a7e6]{height:61px}.disk[data-v-5178a7e6]:not(:last-of-type){padding-bottom:10px;margin-bottom:30px}.flex[data-v-5178a7e6]{display:flex;justify-content:space-between}.badge-state[data-v-5178a7e6]{padding:2px 5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#node[data-v-467db875]{display:flex;flex-direction:column}#node[data-v-467db875],#node .content[data-v-467db875]{flex-grow:1}#node .wrapper[data-v-467db875]{position:relative}#node .nicOption[data-v-467db875]{display:flex;justify-content:space-between}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header[data-v-59bb2be6]{display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".output{display:flex;flex-direction:column;flex-grow:1}.output .provider h1{display:inline-block}.output .box-container{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:0 -10px}@media only screen and (min-width:480px){.output .box-container .toggle-gradient-box{width:100%}}@media only screen and (min-width:768px){.output .box-container .toggle-gradient-box{width:calc(50% - 20px)}}@media only screen and (min-width:992px){.output .box-container .toggle-gradient-box{width:calc(33.33333% - 20px)}}@media only screen and (min-width:1281px){.output .box-container .toggle-gradient-box{width:calc(25% - 20px)}}.output .box-container .toggle-gradient-box{margin:10px;padding:10px;position:relative;border-radius:calc(var(--border-radius)*1.5)}.output .box-container .toggle-gradient-box:hover{box-shadow:0 0 30px var(--shadow);transition:box-shadow .1s ease-in-out;cursor:pointer}.output .box-container .toggle-gradient-box .side-label{transform:rotate(180deg);position:absolute;top:0;left:0;bottom:0;min-width:calc(var(--border-radius)*1.5);width:15px;border-top-right-radius:calc(var(--border-radius)*1.5);border-bottom-right-radius:calc(var(--border-radius)*1.5)}.output .box-container .toggle-gradient-box .side-label label{text-align:center;writing-mode:tb;height:100%;padding:0 2px;display:block;white-space:no-wrap;text-overflow:ellipsis}.output .box-container .toggle-gradient-box .logo{text-align:center;width:60px;height:60px;border-radius:calc(var(--border-radius)*2);overflow:hidden;background-color:#fff;display:inline-block;vertical-align:middle}.output .box-container .toggle-gradient-box .logo img{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}.output .box-container .toggle-gradient-box:hover{background-position:100%}.output .box-container .toggle-gradient-box .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:0;display:inline-block;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"h3[data-v-3585e2fe]{margin-top:2em}input[data-v-3585e2fe]{margin-top:1em}.route[real-mode=view] .label[data-v-3585e2fe]{color:var(--input-label)}button[data-v-3585e2fe]{margin-left:.5em}a[data-v-3585e2fe]:hover{text-decoration:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".remove-btn[data-v-17d6f3b0]{align-self:center}.trunk-span[data-v-17d6f3b0]{flex:5}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cronEditor[data-v-cab29070]{align-items:center;display:flex}.editCronBtn[data-v-cab29070]{margin-bottom:30px;margin-left:10px;height:60px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".edit-change[data-v-45d7bc4b]{align-items:center;display:flex}.edit-change>h5[data-v-45d7bc4b]{flex:1}[data-v-45d7bc4b] .edit-help code{padding:1px 5px}[data-v-45d7bc4b] .banner__content.closable{white-space:normal;word-break:break-word}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".column-headers .row.custom[data-v-f04994c6]{max-width:calc(100% - 75px)}.row[data-v-f04994c6]{align-items:center}.select[data-v-f04994c6]{max-width:480px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".custom-headers[data-v-e0dfa694]{align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-input.compact-input[data-v-76a78353]{padding:7px 10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-input.compact-input[data-v-1618b260]{padding:7px 10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-input.compact-input[data-v-6afc4f36]{padding:7px 10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#restore[data-v-78a029f1]{display:flex;flex-grow:1;flex-direction:column}#restore[data-v-78a029f1] .radio-group{display:flex}#restore[data-v-78a029f1] .radio-group .radio-container{margin-right:30px}#restore .content[data-v-78a029f1]{flex-grow:1}#restore .footer[data-v-78a029f1]{border-top:var(--header-border-size) solid var(--header-border);margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:10px 24px}#restore .footer[data-v-78a029f1] .spacer-small{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".kv-item.value>.unlabeled-select[data-v-64a57538]{height:40px;line-height:1}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#restore[data-v-68f0cfa3]{display:flex;flex-grow:1;flex-direction:column}#restore[data-v-68f0cfa3] .radio-group{display:flex}#restore[data-v-68f0cfa3] .radio-group .radio-container{margin-right:30px}#restore .content[data-v-68f0cfa3]{flex-grow:1}#restore .footer[data-v-68f0cfa3]{border-top:var(--header-border-size) solid var(--header-border);margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:10px 24px}#restore .footer[data-v-68f0cfa3] .spacer-small{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".section-divider[data-v-153488d4]{border:none;border-top:1px solid var(--border);margin:10px 0 20px}.custom-interface-header[data-v-153488d4]{margin-bottom:10px;font-weight:600}.custom-interface-row[data-v-153488d4]{align-items:flex-start}.interface-row[data-v-153488d4]{width:calc(100% - 90px);margin-bottom:10px}.nodes-row[data-v-153488d4]{align-items:flex-start}.custom-interface-add[data-v-153488d4]{display:flex;justify-content:flex-end;margin-top:10px}[data-v-153488d4] .nodes-row .array-list-select .box{grid-template-columns:minmax(0,1fr) auto;align-items:center}[data-v-153488d4] .nodes-row .array-list-select .box .remove{align-self:center}.custom-interface-primary-add[data-v-153488d4]{max-width:100%}.custom-interface-box[data-v-153488d4]{position:relative;width:100%;padding:20px;margin-bottom:5px}[data-v-153488d4] .custom-interface-list .box{grid-template-columns:1fr}.remove[data-v-153488d4]{position:absolute;top:10px;right:10px;z-index:1;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-590f4df4]{position:relative}.removeBtn[data-v-590f4df4]{position:absolute;top:10px;right:10px;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dhcpOption-banner[data-v-13084858]{width:-moz-max-content;width:max-content}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-cff1ac6e],.pool-row[data-v-cff1ac6e]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.pool-headers.cidr[data-v-cff1ac6e],.pool-row.cidr[data-v-cff1ac6e]{grid-template-columns:41.75% 41.75% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-4bce4a2b],.pool-row[data-v-4bce4a2b]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.pool-headers.localConnectIP[data-v-4bce4a2b],.pool-row.localConnectIP[data-v-4bce4a2b]{grid-template-columns:41.75% 41.75% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".compat-matrix,.device-col{display:flex}.device-col{flex-direction:column;border-right:1px solid var(--border)}.device-col>*{border-bottom:1px solid var(--border)}.compat-cell{flex-basis:1em;padding:0 10px 0 10px}.compat-cell.has-device{background-color:var(--info-banner-bg)}.device-label,.node-label{display:flex;align-items:center;color:var(--input-label)}.node-label{padding:0 10px;justify-content:center}.blank-corner,.compat-cell,.device-label,.node-label{flex-basis:calc(2em + 10px)}.blank-corner{background:linear-gradient(to top right,#fff 0,#fff calc(50% - 1px),var(--body-text) 50%,#fff calc(50% + 1px),#fff 100%)}.blank-corner DIV.text-right{padding-left:80px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm-filesystem[data-v-0d9401e2]{padding:10px 0}.filesystem-row[data-v-0d9401e2]{border-bottom:1px solid var(--border);padding-bottom:15px}.remove-col[data-v-0d9401e2]{display:flex;align-items:center;justify-content:center}.remove-btn[data-v-0d9401e2]{padding:0}.pre-wrapper[data-v-0d9401e2]{position:relative}.pre-wrapper pre[data-v-0d9401e2]{padding-right:36px}.pre-wrapper .icon-btn[data-v-0d9401e2]{position:absolute;top:0;right:5px;padding:2px 4px;line-height:1}.pre-wrapper .icon-btn[data-v-0d9401e2]:active{background-color:var(--success)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-7c353956] .resource-xml{flex:1;display:flex;flex-direction:column}[data-v-7c353956] .resource-xml .xml-editor{flex:1;min-height:350px;font-family:monospace}[data-v-7c353956] .resource-xml .xml-editor .code-mirror .CodeMirror{min-height:350px}.xml[data-v-7c353956]{height:350px;overflow:auto}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#vm[data-v-b8e4d116] .vm-radio-group .radio-group{display:flex}#vm[data-v-b8e4d116] .vm-radio-group .radio-group .radio-container{margin-right:30px}#vm .restart[data-v-b8e4d116]{display:flex;justify-content:flex-end}#vm .banner-right[data-v-b8e4d116]{width:auto;display:flex;justify-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-4914b3a7]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center;grid-template-columns:40% 40% 15%}.pool-headers.show-project-and-cluster[data-v-4914b3a7]{grid-template-columns:25% 25% 25% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-row[data-v-4db6b05a]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center;grid-template-columns:40% 40% 15%}.pool-row.show-project-and-cluster[data-v-4db6b05a]{grid-template-columns:25% 25% 25% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pool-headers[data-v-6a840725],.pool-row[data-v-6a840725]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.pool-headers.cidr[data-v-6a840725],.pool-row.cidr[data-v-6a840725]{grid-template-columns:41.75% 41.75% 15%}.pool-headers.range[data-v-6a840725],.pool-row.range[data-v-6a840725]{grid-template-columns:20% 20% 20% 20% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".listener-headers[data-v-602acdc3],.listener-row[data-v-602acdc3]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center;grid-template-columns:35% 15% 15% 15% 15%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".title[data-v-ef4b96d4]{margin-bottom:10px}.title .read-from-file[data-v-ef4b96d4]{float:right}.ports-headers[data-v-ef4b96d4],.ports-row[data-v-ef4b96d4]{display:grid;grid-column-gap:1.75%;margin-bottom:10px;align-items:center}.ports-headers.show-protocol[data-v-ef4b96d4],.ports-row.show-protocol[data-v-ef4b96d4]{grid-template-columns:23% 23% 10% 15% 15% 10%}.ports-headers.show-protocol[data-v-ef4b96d4]:not(.show-node-port),.ports-row.show-protocol[data-v-ef4b96d4]:not(.show-node-port){grid-template-columns:31% 31% 10% 15% 10%}.ports-headers.show-node-port[data-v-ef4b96d4]:not(.show-protocol),.ports-row.show-node-port[data-v-ef4b96d4]:not(.show-protocol){grid-template-columns:28% 28% 15% 15% 10%}.ports-headers[data-v-ef4b96d4]{color:var(--input-label)}.toggle-host-ports[data-v-ef4b96d4]{color:var(--primary)}.remove BUTTON[data-v-ef4b96d4]{padding:0}.ports-row>div[data-v-ef4b96d4]{height:100%}.ports-row .port-protocol[data-v-ef4b96d4] .unlabeled-select .v-select.inline{margin-top:2px}.footer[data-v-ef4b96d4]{margin-top:10px;margin-left:5px}.footer .protip[data-v-ef4b96d4]{float:right;padding:5px 0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".network-row[data-v-6df4a4c4]{border:1px solid var(--border);padding:10px;border-radius:var(--border-radius);background:var(--body-bg)}.remove-btn-container[data-v-6df4a4c4]{display:flex;align-items:center;justify-content:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".section-divider[data-v-53cc9408]{border:none;border-top:1px solid var(--border);margin:10px 0 20px}.node-selector-box[data-v-53cc9408]{position:relative}.node-selector-box .remove[data-v-53cc9408]{position:absolute;top:10px;right:10px;z-index:1;padding:0}.underlay-conflict-warning[data-v-53cc9408]{display:inline-flex;align-items:center;gap:4px;margin-top:4px;color:var(--warning);font-size:13px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button[data-v-1750718a]{all:unset;height:0;position:relative;top:-35px;float:right;margin-right:7px;cursor:pointer}button .align-value[data-v-1750718a]{padding-top:7px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".network-policy-edit[data-v-7a1c4cde]{flex:auto;display:flex;flex-direction:column}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./ConsumptionGauge.vue?vue&type=template&id=2456f346\"\nimport script from \"./ConsumptionGauge.vue?vue&type=script&lang=js\"\nexport * from \"./ConsumptionGauge.vue?vue&type=script&lang=js\"\n\nimport \"./ConsumptionGauge.vue?vue&type=style&index=0&id=2456f346&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ text }}\n \n \n \n\n","import { render } from \"./CopyToClipboardText.vue?vue&type=template&id=037ba460&scoped=true\"\nimport script from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\nexport * from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\n\nimport \"./CopyToClipboardText.vue?vue&type=style&index=0&id=037ba460&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-037ba460\"]])\n\nexport default __exports__","\n\n\n \n {{ attachVMName }}\n \n\n \n {{ attachVMName }}\n \n \n","import { render } from \"./AttachVMWithName.vue?vue&type=template&id=744a8443\"\nimport script from \"./AttachVMWithName.vue?vue&type=script&lang=js\"\nexport * from \"./AttachVMWithName.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n \n \n {{ value }}\n \n \n —\n \n \n","import { render } from \"./BackupCreatedFrom.vue?vue&type=template&id=ffec2bb2\"\nimport script from \"./BackupCreatedFrom.vue?vue&type=script&lang=js\"\nexport * from \"./BackupCreatedFrom.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n {{ displayLabel }} \n \n","import { render } from \"./CloudInitType.vue?vue&type=template&id=57122a98\"\nimport script from \"./CloudInitType.vue?vue&type=script&lang=js\"\nexport * from \"./CloudInitType.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n —\n \n
\n \n
\n
\n {{ value.percentage || 0 }}%\n
\n
\n \n {{ t('generic.completed') }}\n
\n \n\n\n","import { render } from \"./HarvesterBackupProgressBar.vue?vue&type=template&id=fa34696c&scoped=true\"\nimport script from \"./HarvesterBackupProgressBar.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBackupProgressBar.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterBackupProgressBar.vue?vue&type=style&index=0&id=fa34696c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fa34696c\"]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n
\n {{ t('harvester.backup.matchTarget') }}\n
\n
\n \n","import { render } from \"./HarvesterBackupTargetValidation.vue?vue&type=template&id=c168210a\"\nimport script from \"./HarvesterBackupTargetValidation.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBackupTargetValidation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n —\n \n \n","import { render } from \"./HarvesterBoolean.vue?vue&type=template&id=04901bf9\"\nimport script from \"./HarvesterBoolean.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBoolean.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n —\n \n \n","import { render } from \"./HarvesterCPUPinning.vue?vue&type=template&id=79f08508\"\nimport script from \"./HarvesterCPUPinning.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCPUPinning.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n \n \n","import { render } from \"./HarvesterCronExpression.vue?vue&type=template&id=3acb72bc\"\nimport script from \"./HarvesterCronExpression.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCronExpression.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n\n \n \n {{ index + 1 }}. {{ message }}\n
\n \n \n
\n \n\n\n","import { render } from \"./HarvesterDiskState.vue?vue&type=template&id=af7a018c&scoped=true\"\nimport script from \"./HarvesterDiskState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterDiskState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterDiskState.vue?vue&type=style&index=0&id=af7a018c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-af7a018c\"]])\n\nexport default __exports__","\n\n\n \n \n
\n \n","import { render } from \"./HarvesterHost.vue?vue&type=template&id=9cdbf30e\"\nimport script from \"./HarvesterHost.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHost.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n {{ displayMode }} \n \n","import { render } from \"./HarvesterHostNetworkConfigMode.vue?vue&type=template&id=514b888b\"\nimport script from \"./HarvesterHostNetworkConfigMode.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHostNetworkConfigMode.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__",">\n\n\n \n \n","import { render } from \"./HarvesterListener.vue?vue&type=template&id=10785d46\"\nimport script from \"./HarvesterListener.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterListener.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n / \n \n
\n \n\n\n","import { render } from \"./HarvesterMigrationState.vue?vue&type=template&id=61b045e5&scoped=true\"\nimport script from \"./HarvesterMigrationState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterMigrationState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterMigrationState.vue?vue&type=style&index=0&id=61b045e5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61b045e5\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./HarvesterVFAddress.vue?vue&type=template&id=3622b06f&scoped=true\"\nimport script from \"./HarvesterVFAddress.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVFAddress.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVFAddress.vue?vue&type=style&index=0&id=3622b06f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3622b06f\"]])\n\nexport default __exports__","\n\n\n \n \n {{ row.numVFs }}\n \n
\n \n","import { render } from \"./HarvesterVFsNum.vue?vue&type=template&id=d181062c\"\nimport script from \"./HarvesterVFsNum.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVFsNum.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./HarvesterVGpuDevices.vue?vue&type=template&id=e3909f16&scoped=true\"\nimport script from \"./HarvesterVGpuDevices.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVGpuDevices.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVGpuDevices.vue?vue&type=style&index=0&id=e3909f16&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e3909f16\"]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n \n \n —\n \n \n","import { render } from \"./HarvesterVlan.vue?vue&type=template&id=63fcc839\"\nimport script from \"./HarvesterVlan.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVlan.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n
\n
\n \n \n \n\n \n \n \n \n
\n \n \n\n\n","import { render } from \"./HarvesterVmState.vue?vue&type=template&id=3c767fd4&scoped=true\"\nimport script from \"./HarvesterVmState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVmState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVmState.vue?vue&type=style&index=0&id=3c767fd4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3c767fd4\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n
\n \n \n \n\n \n \n {{ warningMessage }}\n
\n \n \n
\n \n \n\n\n","import { render } from \"./HarvesterVolumeState.vue?vue&type=template&id=e0f7fbca&scoped=true\"\nimport script from \"./HarvesterVolumeState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVolumeState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVolumeState.vue?vue&type=style&index=0&id=e0f7fbca&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e0f7fbca\"]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n {{ value }}\n
\n
\n \n\n\n","import { render } from \"./NetworkRouteConnectivity.vue?vue&type=template&id=d543d746&scoped=true\"\nimport script from \"./NetworkRouteConnectivity.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkRouteConnectivity.vue?vue&type=script&lang=js\"\n\nimport \"./NetworkRouteConnectivity.vue?vue&type=style&index=0&id=d543d746&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d543d746\"]])\n\nexport default __exports__","\n\n\n 0\"\n :to=\"to\"\n >\n {{ value.length }}\n \n \n","import { render } from \"./RelatedVolumeSnapshotCounts.vue?vue&type=template&id=4ceb034f\"\nimport script from \"./RelatedVolumeSnapshotCounts.vue?vue&type=script&lang=js\"\nexport * from \"./RelatedVolumeSnapshotCounts.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n {{ value }}\n \n \n {{ value }}\n \n \n","import { render } from \"./SnapshotTargetVolume.vue?vue&type=template&id=0e097ca4\"\nimport script from \"./SnapshotTargetVolume.vue?vue&type=script&lang=js\"\nexport * from \"./SnapshotTargetVolume.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n
\n
0\"\n trigger=\"hover\"\n offset=\"16\"\n >\n \n \n \n\n \n \n {{ index + 1 }}.\n {{ message.text }}\n
\n \n \n
\n \n \n\n\n","import { render } from \"./StateWithPopover.vue?vue&type=template&id=61fe0c74&scoped=true\"\nimport script from \"./StateWithPopover.vue?vue&type=script&lang=js\"\nexport * from \"./StateWithPopover.vue?vue&type=script&lang=js\"\n\nimport \"./StateWithPopover.vue?vue&type=style&index=0&id=61fe0c74&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61fe0c74\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".consumption-gauge .numbers{display:flex;flex-direction:row;justify-content:space-between}.consumption-gauge .numbers-stats{display:flex;flex-direction:row;align-items:center;gap:10px;align-self:baseline}.consumption-gauge .numbers .percentage{font-weight:700}.consumption-gauge .numbers .percentage i{margin-right:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".copy-to-clipboard-text[data-v-037ba460]{white-space:nowrap}.copy-to-clipboard-text.plain[data-v-037ba460]{color:var(--body-text)}.copy-to-clipboard-text.plain[data-v-037ba460]:hover{text-decoration:none}.copy-to-clipboard-text[data-v-037ba460]:active{color:var(--primary-keyboard-focus)}.copy-to-clipboard-text.copied[data-v-037ba460]{pointer-events:none;color:var(--success)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".parent[data-v-fa34696c]{display:grid;grid-template-areas:\\\"progress text\\\";grid-template-columns:auto 80px;align-items:center}.parent .progress[data-v-fa34696c]{background-color:#b8c3dc;width:100%}.parent .progress-box[data-v-fa34696c]{grid-area:progress}.parent .text[data-v-fa34696c]{grid-area:text;text-align:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-af7a018c]{display:flex;justify-content:left}.state .icon-warning[data-v-af7a018c]{margin-top:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".badge-state[data-v-61b045e5]{padding:5px 10px;border:1px solid transparent;border-radius:20px}.badge-state.bg-info[data-v-61b045e5]{border-color:var(--primary)}.badge-state.bg-error[data-v-61b045e5]{border-color:var(--error)}.badge-state.bg-warning[data-v-61b045e5]{border-color:var(--warning)}.badge-state.bg-success[data-v-61b045e5]{color:var(--success);border-color:var(--success);background:transparent}.sortable-table TD .badge-state[data-v-61b045e5]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-wrap:break-word;display:inline-block;max-width:100%;position:relative;padding:2px 10px 1px 10px;font-size:1em;max-width:200px;font-size:.85em;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vfs[data-v-3622b06f]{min-width:380px}.vfs .show-more[data-v-3622b06f]{font-size:12px}.popover .popover-inner .vfs-popup a[data-v-3622b06f]{color:var(--link)}.popover .popover-inner .vfs-popup a[data-v-3622b06f]:hover{text-decoration:underline;color:var(--body-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vgpudevices[data-v-e3909f16]{min-width:380px}.vgpudevices .show-more[data-v-e3909f16]{font-size:12px}.popover .popover-inner .vgpu-popup a[data-v-e3909f16]{color:var(--link)}.popover .popover-inner .vgpu-popup a[data-v-e3909f16]:hover{text-decoration:underline;color:var(--body-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-3c767fd4]{display:flex;justify-content:space-between}.state .icon-warning[data-v-3c767fd4]{margin-top:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-e0f7fbca]{display:flex}.state .icon-warning[data-v-e0f7fbca]{margin-top:2px}.warning-message[data-v-e0f7fbca]:first-letter{text-transform:uppercase}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text[data-v-d543d746]{text-align:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-61fe0c74]{display:flex}.state .icon-warning[data-v-61fe0c74]{margin-top:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./ConsumptionGauge.vue?vue&type=template&id=2456f346\"\nimport script from \"./ConsumptionGauge.vue?vue&type=script&lang=js\"\nexport * from \"./ConsumptionGauge.vue?vue&type=script&lang=js\"\n\nimport \"./ConsumptionGauge.vue?vue&type=style&index=0&id=2456f346&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ text }}\n \n \n \n\n","import { render } from \"./CopyToClipboardText.vue?vue&type=template&id=037ba460&scoped=true\"\nimport script from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\nexport * from \"./CopyToClipboardText.vue?vue&type=script&lang=js\"\n\nimport \"./CopyToClipboardText.vue?vue&type=style&index=0&id=037ba460&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-037ba460\"]])\n\nexport default __exports__","\n\n\n \n {{ attachVMName }}\n \n\n \n {{ attachVMName }}\n \n \n","import { render } from \"./AttachVMWithName.vue?vue&type=template&id=744a8443\"\nimport script from \"./AttachVMWithName.vue?vue&type=script&lang=js\"\nexport * from \"./AttachVMWithName.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n \n \n {{ value }}\n \n \n —\n \n \n","import { render } from \"./BackupCreatedFrom.vue?vue&type=template&id=ffec2bb2\"\nimport script from \"./BackupCreatedFrom.vue?vue&type=script&lang=js\"\nexport * from \"./BackupCreatedFrom.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n {{ displayLabel }} \n \n","import { render } from \"./CloudInitType.vue?vue&type=template&id=57122a98\"\nimport script from \"./CloudInitType.vue?vue&type=script&lang=js\"\nexport * from \"./CloudInitType.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n —\n \n
\n \n
\n
\n {{ value.percentage || 0 }}%\n
\n
\n \n {{ t('generic.completed') }}\n
\n \n\n\n","import { render } from \"./HarvesterBackupProgressBar.vue?vue&type=template&id=fa34696c&scoped=true\"\nimport script from \"./HarvesterBackupProgressBar.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBackupProgressBar.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterBackupProgressBar.vue?vue&type=style&index=0&id=fa34696c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fa34696c\"]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n
\n {{ t('harvester.backup.matchTarget') }}\n
\n
\n \n","import { render } from \"./HarvesterBackupTargetValidation.vue?vue&type=template&id=c168210a\"\nimport script from \"./HarvesterBackupTargetValidation.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBackupTargetValidation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n —\n \n \n","import { render } from \"./HarvesterBoolean.vue?vue&type=template&id=04901bf9\"\nimport script from \"./HarvesterBoolean.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterBoolean.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n —\n \n \n","import { render } from \"./HarvesterCPUPinning.vue?vue&type=template&id=79f08508\"\nimport script from \"./HarvesterCPUPinning.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCPUPinning.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n \n \n","import { render } from \"./HarvesterCronExpression.vue?vue&type=template&id=3acb72bc\"\nimport script from \"./HarvesterCronExpression.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterCronExpression.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n\n \n \n {{ index + 1 }}. {{ message }}\n
\n \n \n
\n \n\n\n","import { render } from \"./HarvesterDiskState.vue?vue&type=template&id=af7a018c&scoped=true\"\nimport script from \"./HarvesterDiskState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterDiskState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterDiskState.vue?vue&type=style&index=0&id=af7a018c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-af7a018c\"]])\n\nexport default __exports__","\n\n\n \n \n
\n \n","import { render } from \"./HarvesterHost.vue?vue&type=template&id=9cdbf30e\"\nimport script from \"./HarvesterHost.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHost.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n {{ displayMode }} \n \n","import { render } from \"./HarvesterHostNetworkConfigMode.vue?vue&type=template&id=514b888b\"\nimport script from \"./HarvesterHostNetworkConfigMode.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterHostNetworkConfigMode.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__",">\n\n\n \n \n","import { render } from \"./HarvesterListener.vue?vue&type=template&id=10785d46\"\nimport script from \"./HarvesterListener.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterListener.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n / \n \n
\n \n\n\n","import { render } from \"./HarvesterMigrationState.vue?vue&type=template&id=61b045e5&scoped=true\"\nimport script from \"./HarvesterMigrationState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterMigrationState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterMigrationState.vue?vue&type=style&index=0&id=61b045e5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61b045e5\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./HarvesterVFAddress.vue?vue&type=template&id=3622b06f&scoped=true\"\nimport script from \"./HarvesterVFAddress.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVFAddress.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVFAddress.vue?vue&type=style&index=0&id=3622b06f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3622b06f\"]])\n\nexport default __exports__","\n\n\n \n \n {{ row.numVFs }}\n \n
\n \n","import { render } from \"./HarvesterVFsNum.vue?vue&type=template&id=d181062c\"\nimport script from \"./HarvesterVFsNum.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVFsNum.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./HarvesterVGpuDevices.vue?vue&type=template&id=e3909f16&scoped=true\"\nimport script from \"./HarvesterVGpuDevices.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVGpuDevices.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVGpuDevices.vue?vue&type=style&index=0&id=e3909f16&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e3909f16\"]])\n\nexport default __exports__","\n\n\n \n {{ value }}\n \n \n —\n \n \n","import { render } from \"./HarvesterVlan.vue?vue&type=template&id=63fcc839\"\nimport script from \"./HarvesterVlan.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVlan.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n
\n
\n \n \n \n\n \n \n \n \n
\n \n \n\n\n","import { render } from \"./HarvesterVmState.vue?vue&type=template&id=3c767fd4&scoped=true\"\nimport script from \"./HarvesterVmState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVmState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVmState.vue?vue&type=style&index=0&id=3c767fd4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3c767fd4\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n
\n \n \n \n\n \n \n {{ warningMessage }}\n
\n \n \n
\n \n \n\n\n","import { render } from \"./HarvesterVolumeState.vue?vue&type=template&id=e0f7fbca&scoped=true\"\nimport script from \"./HarvesterVolumeState.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterVolumeState.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterVolumeState.vue?vue&type=style&index=0&id=e0f7fbca&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e0f7fbca\"]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n {{ value }}\n
\n
\n \n\n\n","import { render } from \"./NetworkRouteConnectivity.vue?vue&type=template&id=d543d746&scoped=true\"\nimport script from \"./NetworkRouteConnectivity.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkRouteConnectivity.vue?vue&type=script&lang=js\"\n\nimport \"./NetworkRouteConnectivity.vue?vue&type=style&index=0&id=d543d746&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d543d746\"]])\n\nexport default __exports__","\n\n\n 0\"\n :to=\"to\"\n >\n {{ value.length }}\n \n \n","import { render } from \"./RelatedVolumeSnapshotCounts.vue?vue&type=template&id=4ceb034f\"\nimport script from \"./RelatedVolumeSnapshotCounts.vue?vue&type=script&lang=js\"\nexport * from \"./RelatedVolumeSnapshotCounts.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n \n {{ value }}\n \n \n {{ value }}\n \n \n","import { render } from \"./SnapshotTargetVolume.vue?vue&type=template&id=0e097ca4\"\nimport script from \"./SnapshotTargetVolume.vue?vue&type=script&lang=js\"\nexport * from \"./SnapshotTargetVolume.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n
\n
0\"\n trigger=\"hover\"\n offset=\"16\"\n >\n \n \n \n\n \n \n {{ index + 1 }}.\n {{ message.text }}\n
\n \n \n
\n \n \n\n\n","import { render } from \"./StateWithPopover.vue?vue&type=template&id=61fe0c74&scoped=true\"\nimport script from \"./StateWithPopover.vue?vue&type=script&lang=js\"\nexport * from \"./StateWithPopover.vue?vue&type=script&lang=js\"\n\nimport \"./StateWithPopover.vue?vue&type=style&index=0&id=61fe0c74&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61fe0c74\"]])\n\nexport default __exports__","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".consumption-gauge .numbers{display:flex;flex-direction:row;justify-content:space-between}.consumption-gauge .numbers-stats{display:flex;flex-direction:row;align-items:center;gap:10px;align-self:baseline}.consumption-gauge .numbers .percentage{font-weight:700}.consumption-gauge .numbers .percentage i{margin-right:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".copy-to-clipboard-text[data-v-037ba460]{white-space:nowrap}.copy-to-clipboard-text.plain[data-v-037ba460]{color:var(--body-text)}.copy-to-clipboard-text.plain[data-v-037ba460]:hover{text-decoration:none}.copy-to-clipboard-text[data-v-037ba460]:active{color:var(--primary-keyboard-focus)}.copy-to-clipboard-text.copied[data-v-037ba460]{pointer-events:none;color:var(--success)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".parent[data-v-fa34696c]{display:grid;grid-template-areas:\\\"progress text\\\";grid-template-columns:auto 80px;align-items:center}.parent .progress[data-v-fa34696c]{background-color:#b8c3dc;width:100%}.parent .progress-box[data-v-fa34696c]{grid-area:progress}.parent .text[data-v-fa34696c]{grid-area:text;text-align:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-af7a018c]{display:flex;justify-content:left}.state .icon-warning[data-v-af7a018c]{margin-top:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".badge-state[data-v-61b045e5]{padding:5px 10px;border:1px solid transparent;border-radius:20px}.badge-state.bg-info[data-v-61b045e5]{border-color:var(--primary)}.badge-state.bg-error[data-v-61b045e5]{border-color:var(--error)}.badge-state.bg-warning[data-v-61b045e5]{border-color:var(--warning)}.badge-state.bg-success[data-v-61b045e5]{color:var(--success);border-color:var(--success);background:transparent}.sortable-table TD .badge-state[data-v-61b045e5]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-wrap:break-word;display:inline-block;max-width:100%;position:relative;padding:2px 10px 1px 10px;font-size:1em;max-width:200px;font-size:.85em;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vfs[data-v-3622b06f]{min-width:380px}.vfs .show-more[data-v-3622b06f]{font-size:12px}.popover .popover-inner .vfs-popup a[data-v-3622b06f]{color:var(--link)}.popover .popover-inner .vfs-popup a[data-v-3622b06f]:hover{text-decoration:underline;color:var(--body-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vgpudevices[data-v-e3909f16]{min-width:380px}.vgpudevices .show-more[data-v-e3909f16]{font-size:12px}.popover .popover-inner .vgpu-popup a[data-v-e3909f16]{color:var(--link)}.popover .popover-inner .vgpu-popup a[data-v-e3909f16]:hover{text-decoration:underline;color:var(--body-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-3c767fd4]{display:flex;justify-content:space-between}.state .icon-warning[data-v-3c767fd4]{margin-top:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-e0f7fbca]{display:flex}.state .icon-warning[data-v-e0f7fbca]{margin-top:2px}.warning-message[data-v-e0f7fbca]:first-letter{text-transform:uppercase}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text[data-v-d543d746]{text-align:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state[data-v-61fe0c74]{display:flex}.state .icon-warning[data-v-61fe0c74]{margin-top:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./Card.vue?vue&type=template&id=52307124&scoped=true&ts=true\"\nimport script from \"./Card.vue?vue&type=script&lang=ts\"\nexport * from \"./Card.vue?vue&type=script&lang=ts\"\n\nimport \"./Card.vue?vue&type=style&index=0&id=52307124&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-52307124\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withKeys as _withKeys, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"switch hand\" }\nconst _hoisted_2 = [\"checked\", \"aria-label\"]\nconst _hoisted_3 = {\n ref: \"switchChrome\",\n class: \"slider round\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"toggle-container\", {'toggle-disabled': _ctx.disabled}])\n }, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"label no-select hand\", { active: !_ctx.state}]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle(false)))\n }, _toDisplayString(_ctx.offLabel), 3),\n _createElementVNode(\"label\", _hoisted_1, [\n _createElementVNode(\"input\", {\n ref: \"switchInput\",\n type: \"checkbox\",\n role: \"switch\",\n checked: _ctx.state,\n \"aria-label\": _ctx.onLabel,\n onInput: _cache[1] || (_cache[1] = ($event: any) => (_ctx.toggle(null))),\n onKeydown: _cache[2] || (_cache[2] = _withKeys(($event: any) => (_ctx.toggle(null)), [\"enter\"]))\n }, null, 40, _hoisted_2),\n _createElementVNode(\"span\", _hoisted_3, null, 512)\n ]),\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"label no-select hand\", { active: _ctx.state}]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.toggle(true)))\n }, _toDisplayString(_ctx.onLabel), 3)\n ], 2))\n}","\n\n\n \n {{ offLabel }} \n \n \n \n \n {{ onLabel }} \n \n \n\n\n","import { render } from \"./ToggleSwitch.vue?vue&type=template&id=fcfd5604&scoped=true&ts=true\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=ts\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=ts\"\n\nimport \"./ToggleSwitch.vue?vue&type=style&index=0&id=fcfd5604&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fcfd5604\"]])\n\nexport default __exports__","import { ref } from 'vue';\n\n/**\n * Manages a collection of dropdown items. Includes methods for registering\n * dropdown items and providing the collection to descendant components.\n *\n * @returns Dropdown collection methods and state.\n */\nexport const useDropdownCollection = () => {\n const dropdownItems = ref([]);\n const dropdownContainer = ref(null);\n const firstDropdownItem = ref(null);\n const lastDropdownItem = ref(null);\n\n /**\n * Registers the dropdown container and initializes dropdown items.\n * @param target - The dropdown container element.\n */\n const registerDropdownCollection = (target: HTMLElement | null) => {\n dropdownContainer.value = target;\n if (dropdownContainer.value?.firstElementChild instanceof HTMLElement) {\n registerDropdownItems();\n if (dropdownItems.value[0] instanceof HTMLElement) {\n firstDropdownItem.value = dropdownItems.value[0];\n }\n\n const lastItem = dropdownItems.value[dropdownItems.value.length - 1];\n\n if (lastItem instanceof HTMLElement) {\n lastDropdownItem.value = lastItem;\n }\n }\n };\n\n /**\n * Registers dropdown items by querying the dropdown container for elements.\n */\n const registerDropdownItems = () => {\n dropdownItems.value = [];\n const dropdownNodeList = dropdownContainer.value?.querySelectorAll('[dropdown-menu-item]');\n\n dropdownNodeList?.forEach((element) => {\n dropdownItems.value.push(element);\n });\n };\n\n return {\n dropdownItems,\n firstDropdownItem,\n lastDropdownItem,\n dropdownContainer,\n registerDropdownCollection,\n };\n};\n","import { ref, provide, nextTick, EmitFn } from 'vue';\nimport { useDropdownCollection } from './useDropdownCollection';\nimport { RcButtonType } from '@components/RcButton';\n\n/**\n * Composable that provides the context for a dropdown menu. Includes methods\n * and state for managing the dropdown's visibility, focus, and keyboard\n * interactions.\n *\n * @param firstDropdownItem - First item in the dropdown menu.\n * @returns Dropdown context methods and state. Used for programmatic\n * interactions and setting focus.\n */\nexport const useDropdownContext = (emit: EmitFn<['update:open']>) => {\n const {\n dropdownItems,\n firstDropdownItem,\n lastDropdownItem,\n dropdownContainer,\n registerDropdownCollection,\n } = useDropdownCollection();\n\n const isMenuOpen = ref(false);\n\n /**\n * Controls the visibility of the dropdown menu.\n * @param show - Whether to show or hide the dropdown menu.\n */\n const showMenu = (show: boolean) => {\n if (!show) {\n didKeydown.value = false;\n }\n isMenuOpen.value = show;\n emit('update:open', show);\n };\n\n /**\n * A ref for the dropdown trigger element. Used for programmatic\n * interactions and setting focus.\n */\n const dropdownTrigger = ref(null);\n\n /**\n * Registers the dropdown trigger element.\n * @param triggerRef - The dropdown trigger element.\n */\n const registerTrigger = (triggerRef: RcButtonType) => {\n dropdownTrigger.value = triggerRef;\n };\n\n /**\n * Returns focus to the dropdown trigger and closes the menu.\n */\n const returnFocus = () => {\n showMenu(false);\n dropdownTrigger?.value?.focus();\n };\n\n /**\n * Tracks if a keydown event has occurred. Important for distinguishing keyboard\n * events from mouse events.\n */\n const didKeydown = ref(false);\n\n const handleKeydown = () => {\n didKeydown.value = true;\n };\n\n /**\n * Sets focus to the first dropdown item if a keydown event has occurred.\n */\n const setFocus = (direction: 'down' | 'up') => {\n nextTick(() => {\n if (!didKeydown.value) {\n dropdownContainer.value?.focus();\n\n return;\n }\n\n if (direction === 'down') {\n firstDropdownItem.value?.focus();\n } else if (direction === 'up') {\n lastDropdownItem.value?.focus();\n }\n\n didKeydown.value = false;\n });\n };\n\n const setDropdownDimensions = (target: HTMLElement | null) => {\n if (!target) {\n return;\n }\n\n const { top, bottom } = target.getBoundingClientRect();\n const padding = 32;\n\n // The dropdown exceeds the top or bottom edge of the screen (or both).\n if (top - padding < 0 || bottom + padding > window.innerHeight) {\n const height = Math.min(\n bottom,\n window.innerHeight - top,\n window.innerHeight\n );\n\n target.style.height = `${ height - padding }px`;\n }\n };\n\n /**\n * Provides Dropdown Context data and methods to descendants of RcDropdown.\n * Accessed in descendents with the `inject()` function.\n */\n const provideDropdownContext = () => {\n provide('dropdownContext', {\n showMenu,\n registerTrigger,\n isMenuOpen,\n dropdownItems,\n close: () => returnFocus(),\n focusFirstElement: () => {\n setFocus('down');\n },\n handleKeydown,\n });\n };\n\n return {\n isMenuOpen,\n showMenu,\n returnFocus,\n setFocus,\n provideDropdownContext,\n registerDropdownCollection,\n handleKeydown,\n setDropdownDimensions,\n };\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, withModifiers as _withModifiers, withKeys as _withKeys, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"aria-label\"]\n\nimport { ref } from 'vue';\nimport { useClickOutside } from '@shell/composables/useClickOutside';\nimport { useDropdownContext } from '@components/RcDropdown/useDropdownContext';\n\nimport type { Placement } from 'floating-vue';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcDropdown',\n props: {\n ariaLabel: {},\n distance: {},\n placement: { default: 'bottom-end' }\n },\n emits: ['update:open'],\n setup(__props: any, { emit: __emit }) {\n\n/**\n * Offers a list of choices to the user, such as a set of actions or functions.\n * Opened by activating RcDropdownTrigger.\n *\n * Example:\n *\n * \n * \n * \n * \n * \n * \n * Action 1\n * \n * \n * \n * Action 2\n * \n * \n * \n */\n\n\nconst emit = __emit;\n\nconst {\n isMenuOpen,\n showMenu,\n returnFocus,\n setFocus,\n provideDropdownContext,\n registerDropdownCollection,\n handleKeydown,\n setDropdownDimensions\n} = useDropdownContext(emit);\n\nprovideDropdownContext();\n\nconst popperContainer = ref(null);\nconst dropdownTarget = ref(null);\n\nuseClickOutside(dropdownTarget, () => showMenu(false));\n\nconst applyShow = () => {\n setDropdownDimensions(dropdownTarget.value);\n registerDropdownCollection(dropdownTarget.value);\n setFocus('down');\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_v_dropdown = _resolveComponent(\"v-dropdown\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_dropdown, {\n \"no-auto-focus\": \"\",\n triggers: [],\n shown: _unref(isMenuOpen),\n \"auto-hide\": false,\n container: popperContainer.value,\n placement: __props.placement,\n distance: __props.distance,\n onApplyShow: applyShow\n }, {\n popper: _withCtx(() => [\n _createElementVNode(\"div\", {\n ref_key: \"dropdownTarget\",\n ref: dropdownTarget,\n class: \"dropdownTarget\",\n tabindex: \"-1\",\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"dropdown-menu-collection\": \"\",\n \"aria-label\": __props.ariaLabel || 'Dropdown Menu',\n onKeydown: [\n _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_unref(handleKeydown) && _unref(handleKeydown)(...args))),\n _cache[1] || (_cache[1] = _withKeys(_withModifiers(($event: any) => (_unref(setFocus)('down')), [\"prevent\"]), [\"down\"])),\n _cache[2] || (_cache[2] = _withKeys(_withModifiers(($event: any) => (_unref(setFocus)('up')), [\"prevent\"]), [\"up\"]))\n ]\n }, [\n _renderSlot(_ctx.$slots, \"dropdownCollection\")\n ], 40, _hoisted_1)\n ]),\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"shown\", \"container\", \"placement\", \"distance\"]),\n _createElementVNode(\"div\", {\n ref_key: \"popperContainer\",\n ref: popperContainer,\n class: \"popperContainer\",\n onKeydown: [\n _cache[3] || (_cache[3] = _withKeys(($event: any) => (_unref(showMenu)(false)), [\"tab\"])),\n _cache[4] || (_cache[4] = _withKeys(\n//@ts-ignore\n(...args) => (_unref(returnFocus) && _unref(returnFocus)(...args)), [\"escape\"]))\n ]\n }, null, 544)\n ], 64))\n}\n}\n\n})","\n\n\n \n \n \n \n\n \n \n \n \n \n
\n \n \n \n \n
\n \n\n\n","import script from \"./RcDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcDropdown.vue?vue&type=style&index=0&id=78ba98f8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-78ba98f8\"]])\n\nexport default __exports__","import { Ref, ref } from 'vue';\nimport type { RcButtonType } from '@components/RcButton';\nimport { ButtonVariant, ButtonSize } from '@components/RcButton/types';\n\nexport type DropdownContext = {\n handleKeydown: () => void;\n showMenu: (show: boolean) => void;\n registerTrigger: (triggerRef: RcButtonType | null) => void;\n dropdownItems: Ref;\n focusFirstElement: () => void;\n isMenuOpen: Ref;\n close: () => void;\n}\n\nexport const defaultContext: DropdownContext = {\n handleKeydown: () => null,\n showMenu: (_show: boolean | null) => null,\n registerTrigger: (_triggerRef: RcButtonType | null) => null,\n dropdownItems: ref([]),\n focusFirstElement: () => null,\n isMenuOpen: ref(false),\n close: () => null,\n};\n\nexport type DropdownOption = {\n action?: string;\n divider?: boolean;\n enabled: boolean;\n icon?: string;\n svg?: string;\n label?: string;\n total: number;\n allEnabled: boolean;\n anyEnabled: boolean;\n available: number;\n bulkable?: boolean;\n bulkAction?: string;\n altAction?: string;\n weight?: number;\n}\n\nexport type RcDropdownMenuComponentProps = {\n options: DropdownOption[];\n buttonVariant?: ButtonVariant;\n buttonSize?: ButtonSize;\n buttonAriaLabel?: string;\n dropdownAriaLabel?: string;\n dataTestid?: string;\n}\n","import { inject } from 'vue';\nimport { DropdownContext, defaultContext } from './types';\n\nexport const useDropdownItem = () => {\n const { dropdownItems, close } = inject('dropdownContext') || defaultContext;\n\n /**\n * Handles keydown events to navigate between dropdown items.\n * @param {KeyboardEvent} e - The keydown event.\n */\n const handleKeydown = (e: KeyboardEvent) => {\n const activeItem = document.activeElement;\n\n const activeIndex = dropdownItems.value.indexOf(activeItem || new HTMLElement());\n\n if (activeIndex < 0) {\n return;\n }\n\n const shouldAdvance = e.key === 'ArrowDown';\n\n const newIndex = findNewIndex(shouldAdvance, activeIndex, dropdownItems.value);\n\n if (dropdownItems.value[newIndex] instanceof HTMLElement) {\n dropdownItems.value[newIndex].focus();\n }\n };\n\n /**\n * Finds the new index for the dropdown item based on the key pressed.\n * @param shouldAdvance - Whether to advance to the next or previous item.\n * @param activeIndex - Current active index.\n * @param itemsArr - Array of dropdown items.\n * @returns The new index.\n */\n const findNewIndex = (shouldAdvance: boolean, activeIndex: number, itemsArr: Element[]) => {\n const newIndex = shouldAdvance ? activeIndex + 1 : activeIndex - 1;\n\n if (newIndex > itemsArr.length - 1) {\n return 0;\n }\n\n if (newIndex < 0) {\n return itemsArr.length - 1;\n }\n\n return newIndex;\n };\n\n /**\n * Handles keydown events to activate the dropdown item.\n * @param e - The keydown event.\n */\n const handleActivate = (e: KeyboardEvent) => {\n if (e?.target instanceof HTMLElement) {\n e?.target?.click();\n }\n };\n\n /**\n * Scroll the item into view smoothly\n * @param event FocusIn Event\n */\n const scrollIntoView = (event: Event) => {\n const target = event.target;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n const t = target as HTMLElement;\n\n // If a button was clicked, then do not scroll into view, as this will scroll to make the button\n // visible and the click will be ignored - so just return, so that the click works as expected\n if (t.tagName === 'BUTTON') {\n return;\n }\n\n target?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'nearest',\n });\n };\n\n return {\n handleKeydown,\n close,\n handleActivate,\n scrollIntoView,\n };\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, withModifiers as _withModifiers, unref as _unref, withKeys as _withKeys, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"aria-disabled\"]\n\nimport { useDropdownItem } from '@components/RcDropdown/useDropdownItem';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcDropdownItem',\n props: { disabled: Boolean },\n emits: ['click'],\n setup(__props, { emit: __emit }) {\n\n/**\n * An item for a dropdown menu. Used in conjunction with RcDropdown.\n */\nconst props = __props;\nconst emits = __emit;\n\nconst {\n handleKeydown,\n close,\n handleActivate,\n scrollIntoView,\n} = useDropdownItem();\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n emits('click', e);\n close();\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref: \"dropdownMenuItem\",\n \"dropdown-menu-item\": \"\",\n tabindex: \"-1\",\n role: \"menuitem\",\n disabled: __props.disabled || null,\n \"aria-disabled\": __props.disabled || false,\n onClick: _withModifiers(handleClick, [\"stop\"]),\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(\n//@ts-ignore\n(...args) => (_unref(handleActivate) && _unref(handleActivate)(...args)), [\"enter\",\"space\"])),\n _cache[1] || (_cache[1] = _withKeys(_withModifiers(\n//@ts-ignore\n(...args) => (_unref(handleKeydown) && _unref(handleKeydown)(...args)), [\"prevent\",\"stop\"]), [\"up\",\"down\"]))\n ],\n onMousedown: _withModifiers(() => {/*We use this to prevent clicks from triggering the @focusin below. When we scroll on a click it prevents the action from occurring on the first click.*/}, [\"prevent\"]),\n onFocusin: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_unref(scrollIntoView) && _unref(scrollIntoView)(...args)))\n }, [\n _renderSlot(_ctx.$slots, \"before\"),\n _renderSlot(_ctx.$slots, \"default\")\n ], 40, _hoisted_1))\n}\n}\n\n})","\n\n\n {/*We use this to prevent clicks from triggering the @focusin below. When we scroll on a click it prevents the action from occurring on the first click.*/}\"\n @focusin=\"scrollIntoView\"\n >\n \n \n \n \n \n \n
\n \n\n\n","import script from \"./RcDropdownItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcDropdownItem.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcDropdownItem.vue?vue&type=style&index=0&id=b3f1b0ce&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b3f1b0ce\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, withKeys as _withKeys, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"aria-disabled\"]\n\nimport { Checkbox as RcCheckbox } from '@components/Form/Checkbox';\nimport { useDropdownItem } from '@components/RcDropdown/useDropdownItem';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcDropdownItemCheckbox',\n props: { modelValue: Boolean, disabled: Boolean },\n emits: ['click'],\n setup(__props, { emit: __emit }) {\n\n/**\n * An item for a dropdown menu. Used in conjunction with RcDropdown.\n */\nconst props = __props;\nconst emits = __emit;\n\nconst { handleKeydown, handleActivate, scrollIntoView } = useDropdownItem();\n\nconst handleClick = () => {\n if (props.disabled) {\n return;\n }\n\n emits('click', !props.modelValue);\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref: \"dropdownMenuItem\",\n \"dropdown-menu-item\": \"\",\n tabindex: \"-1\",\n role: \"menuitemcheckbox\",\n disabled: __props.disabled || null,\n \"aria-disabled\": __props.disabled || false,\n onClick: _withModifiers(handleClick, [\"stop\"]),\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(\n//@ts-ignore\n(...args) => (_unref(handleActivate) && _unref(handleActivate)(...args)), [\"enter\",\"space\"])),\n _cache[1] || (_cache[1] = _withKeys(_withModifiers(\n//@ts-ignore\n(...args) => (_unref(handleKeydown) && _unref(handleKeydown)(...args)), [\"prevent\",\"stop\"]), [\"up\",\"down\"]))\n ],\n onFocusin: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_unref(scrollIntoView) && _unref(scrollIntoView)(...args)))\n }, [\n _createVNode(_unref(RcCheckbox), { value: __props.modelValue }, {\n label: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"value\"])\n ], 40, _hoisted_1))\n}\n}\n\n})","import script from \"./RcDropdownItemCheckbox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcDropdownItemCheckbox.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcDropdownItemCheckbox.vue?vue&type=style&index=0&id=42e011ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-42e011ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withModifiers as _withModifiers, withKeys as _withKeys, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"aria-disabled\"]\n\nimport LabeledSelect from '@shell/components/form/LabeledSelect';\nimport { useDropdownItem } from '@components/RcDropdown/useDropdownItem';\nimport { ref } from 'vue';\n\ntype LabeledSelectComponent = {\n focusSearch: () => void;\n};\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcDropdownItemSelect',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n disabled: Boolean,\n options: {\n type: Array,\n default() {\n return [];\n }\n },\n label: {\n type: String,\n default: ''\n }\n},\n emits: ['click', 'select'],\n setup(__props, { emit: __emit }) {\n\n/**\n * An item for a dropdown menu. Used in conjunction with RcDropdown.\n */\n\nconst emits = __emit;\n\nconst { handleKeydown, handleActivate, scrollIntoView } = useDropdownItem();\n\nconst dropdownMenuItem = ref(null);\nconst menuItemSelect = ref(null);\n\nconst handleClick = () => {\n menuItemSelect?.value?.focusSearch();\n};\n\nconst focusMenuItem = () => {\n dropdownMenuItem?.value?.focus();\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref_key: \"dropdownMenuItem\",\n ref: dropdownMenuItem,\n \"dropdown-menu-item\": \"\",\n tabindex: \"-1\",\n role: \"menuitem\",\n disabled: __props.disabled || null,\n \"aria-disabled\": __props.disabled || false,\n onClick: _withModifiers(handleClick, [\"stop\"]),\n onKeydown: [\n _cache[2] || (_cache[2] = _withKeys(\n//@ts-ignore\n(...args) => (_unref(handleActivate) && _unref(handleActivate)(...args)), [\"enter\",\"space\"])),\n _cache[3] || (_cache[3] = _withKeys(_withModifiers(\n//@ts-ignore\n(...args) => (_unref(handleKeydown) && _unref(handleKeydown)(...args)), [\"prevent\",\"stop\"]), [\"up\",\"down\"]))\n ],\n onFocusin: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_unref(scrollIntoView) && _unref(scrollIntoView)(...args)))\n }, [\n _createVNode(_unref(LabeledSelect), {\n ref_key: \"menuItemSelect\",\n ref: menuItemSelect,\n value: __props.modelValue,\n label: __props.label,\n options: __props.options,\n clearable: false,\n placement: \"top\",\n onKeydown: _cache[0] || (_cache[0] = _withKeys(_withModifiers(() => {}, [\"stop\"]), [\"enter\"])),\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => (emits('select', $event))),\n onOnClose: focusMenuItem\n }, null, 8, [\"value\", \"label\", \"options\"])\n ], 40, _hoisted_1))\n}\n}\n\n})","\n \n \n","import { render } from \"./RcDropdownSeparator.vue?vue&type=template&id=84b7c00a\"\nconst script = {}\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, withKeys as _withKeys, withCtx as _withCtx, createSlots as _createSlots, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { inject, onMounted, ref } from 'vue';\nimport { RcButton, RcButtonType } from '@components/RcButton';\nimport { DropdownContext, defaultContext } from './types';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcDropdownTrigger',\n setup(__props, { expose: __expose }) {\n\n/**\n * A button that opens a menu. Used in conjunction with `RcDropdown.vue`.\n */\nconst {\n showMenu,\n registerTrigger,\n isMenuOpen,\n handleKeydown,\n} = inject('dropdownContext') || defaultContext;\n\nconst dropdownTrigger = ref(null);\n\nonMounted(() => {\n registerTrigger(dropdownTrigger.value);\n});\n\nconst focus = () => {\n dropdownTrigger?.value?.focus();\n};\n\n__expose({ focus });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(RcButton), {\n ref_key: \"dropdownTrigger\",\n ref: dropdownTrigger,\n role: \"button\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": _unref(isMenuOpen),\n onKeydown: _withKeys(_unref(handleKeydown), [\"enter\",\"space\"]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(showMenu)(true)))\n }, _createSlots({\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 2\n }, [\n (_ctx.$slots.before)\n ? {\n name: \"before\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"before\")\n ]),\n key: \"0\"\n }\n : undefined,\n (_ctx.$slots.after)\n ? {\n name: \"after\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"after\")\n ]),\n key: \"1\"\n }\n : undefined\n ]), 1032, [\"aria-expanded\", \"onKeydown\"]))\n}\n}\n\n})","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n","import script from \"./RcDropdownTrigger.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcDropdownTrigger.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode } from \"vue\"\n\nimport {\n RcDropdown,\n RcDropdownItem,\n RcDropdownSeparator,\n RcDropdownTrigger\n} from '@components/RcDropdown';\nimport { RcDropdownMenuComponentProps, DropdownOption } from './types';\nimport IconOrSvg from '@shell/components/IconOrSvg';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcDropdownMenu',\n props: {\n options: {},\n buttonVariant: { default: 'primary' },\n buttonSize: { default: undefined },\n buttonAriaLabel: {},\n dropdownAriaLabel: {},\n dataTestid: {}\n },\n emits: ['update:open', 'select'],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit;\n\nconst hasOptions = (options: DropdownOption[]) => {\n return options.length !== undefined ? options.length : Object.keys(options).length > 0;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(RcDropdown), {\n \"aria-label\": __props.dropdownAriaLabel,\n \"onUpdate:open\": _cache[0] || (_cache[0] = (e) => emit('update:open', e))\n }, {\n dropdownCollection: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.options, (a) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: a.label\n }, [\n (!a.divider)\n ? (_openBlock(), _createBlock(_unref(RcDropdownItem), {\n key: 0,\n onClick: (e) => emit('select', e, a)\n }, {\n before: _withCtx(() => [\n (a.icon || a.svg)\n ? (_openBlock(), _createBlock(_unref(IconOrSvg), {\n key: 0,\n icon: a.icon,\n src: a.svg,\n class: \"icon\",\n color: \"header\"\n }, null, 8, [\"icon\", \"src\"]))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n _createTextVNode(\" \" + _toDisplayString(a.label), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]))\n : (_openBlock(), _createBlock(_unref(RcDropdownSeparator), { key: 1 }))\n ], 64))\n }), 128)),\n (!hasOptions(__props.options))\n ? (_openBlock(), _createBlock(_unref(RcDropdownItem), {\n key: 0,\n disabled: \"\"\n }, {\n default: _withCtx(() => [...(_cache[2] || (_cache[2] = [\n _createTextVNode(\" No actions available \", -1)\n ]))]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(RcDropdownTrigger), {\n variant: __props.buttonVariant,\n size: __props.buttonSize,\n \"data-testid\": __props.dataTestid,\n \"aria-label\": __props.buttonAriaLabel\n }, {\n default: _withCtx(() => [...(_cache[1] || (_cache[1] = [\n _createElementVNode(\"i\", { class: \"icon icon-actions\" }, null, -1)\n ]))]),\n _: 1\n }, 8, [\"variant\", \"size\", \"data-testid\", \"aria-label\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"]))\n}\n}\n\n})","\n\n\n emit('update:open', e)\"\n >\n \n \n \n \n \n emit('select', e, a)\"\n >\n \n \n \n {{ a.label }}\n \n \n \n \n No actions available\n \n \n \n \n","import script from \"./RcDropdownMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcDropdownMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { computed, Ref } from 'vue';\n\nexport const StatusDefinitions = {\n info: {\n primary: '--rc-info',\n secondary: '--rc-info-secondary'\n },\n success: {\n primary: '--rc-success',\n secondary: '--rc-success-secondary'\n },\n warning: {\n primary: '--rc-warning',\n secondary: '--rc-warning-secondary'\n },\n error: {\n primary: '--rc-error',\n secondary: '--rc-error-secondary'\n },\n unknown: {\n primary: '--rc-unknown',\n secondary: '--rc-unknown-secondary'\n },\n none: {\n primary: '--rc-none',\n secondary: '--rc-none-secondary'\n },\n};\n\nexport type Status = keyof typeof StatusDefinitions;\nexport type Style = 'solid' | 'outlined';\n\nexport function wrapIfVar(colorVar: string) {\n return colorVar.startsWith('--') ? `var(${ colorVar })` : colorVar;\n}\n\n/**\n * A composable to make it easier to use status colors in multiple components\n *\n * @param status A Ref containing the status value\n * @param style {@link Style} Will the block of code being using the solid or outlined styling\n * @returns An object containing the relevant style colors\n */\nexport function useStatusColors(status: Ref, style: Style) {\n const statusColors = computed(() => {\n return StatusDefinitions[status.value];\n });\n const isOutlined = style === 'outlined';\n\n const borderColor = computed(() => {\n const colorVar = isOutlined ? statusColors.value.secondary : statusColors.value.primary;\n\n return wrapIfVar(colorVar);\n });\n\n const backgroundColor = computed(() => {\n if (status.value === 'none') {\n return 'none';\n }\n const colorVar = isOutlined ? statusColors.value.secondary : statusColors.value.primary;\n\n return wrapIfVar(colorVar);\n });\n\n const textColor = computed(() => {\n const colorVar = isOutlined ? statusColors.value.primary : statusColors.value.secondary;\n\n return wrapIfVar(colorVar);\n });\n\n return {\n borderColor,\n backgroundColor,\n textColor\n };\n}\n","import { Schema, SchemaAttribute, SchemaAttributeColumn } from '@shell/plugins/steve/schema';\nimport { TableColumn } from '@shell/types/store/type-map';\nimport { VuexStoreGetters } from '@shell/types/store/vuex';\nimport { findBy, insertAt, removeObject } from '@shell/utils/array';\nimport { COUNT } from '@shell/config/types';\nimport { ActionFindAllArgs } from '@shell/types/store/dashboard-store.types';\n\nconst FIELD_REGEX = /^\\$\\.metadata\\.fields\\[([0-9]*)\\]/;\n\ntype StoreColumns = { [schemaId: string]: TableColumn[]}\n\n/**\n * Create the headers used in lists to show a resource\n *\n * These could be\n * - Pre-configured via the product (either non-paginated or paginated)\n * - Generated dynamically from schema's attributes.columns\n *\n * There's also some additional ones like state, age, and at least one of name or id\n *\n * The order of these are massaged as well\n */\nexport function createHeaders(\n ctx: {\n getters: VuexStoreGetters,\n rootGetters: VuexStoreGetters,\n state: any,\n },\n opt: {\n headers: StoreColumns,\n typeOptions: any,\n schema: any, // Once the schema-diet changes go in this can be typed\n columns: {\n /**\n * Always show this column (if showState is true)\n */\n state: TableColumn,\n /**\n * If dynamically creating columns, use specific column for name, if required\n */\n name?: TableColumn,\n /**\n * If dynamically creating columns, use specific column for id, if required\n */\n id?: TableColumn\n /**\n * If dynamically creating columns, use specific column for namespace, if required\n */\n namespace: TableColumn,\n /**\n * If dynamically creating columns, use specific column for age, if required\n */\n age: TableColumn,\n },\n pagination: boolean\n }): TableColumn[] {\n const {\n headers, typeOptions, schema, columns, pagination\n } = opt;\n const {\n state: stateColumn, name: nameColumn, namespace: namespaceColumn, id: idColumn, age: ageColumn\n } = columns;\n const { rootGetters } = ctx;\n const out = typeOptions.showState ? [stateColumn] : [];\n const attributes = (schema?.attributes as SchemaAttribute) || {};\n const columnsFromSchema = attributes?.columns || [];\n\n // A specific list has been provided\n if ( headers?.[schema?.id]?.length ) {\n return headers[schema?.id].map((entry: any) => {\n if ( typeof entry === 'string' ) {\n const col = findBy(columnsFromSchema, 'name', entry);\n\n if ( col ) {\n return headerFromSchemaCol(col, rootGetters, pagination, ageColumn);\n } else {\n return null;\n }\n } else {\n return entry;\n }\n }).filter((col: SchemaAttributeColumn) => !!col);\n }\n\n // Otherwise make one up from schema\n let hasName = false;\n const namespaced = attributes.namespaced || false;\n\n for ( const col of columnsFromSchema ) {\n if ( col.format === 'name' ) {\n hasName = true;\n out.push(nameColumn || headerFromSchemaCol(col, rootGetters, pagination, ageColumn));\n if ( namespaced ) {\n out.push(namespaceColumn);\n }\n } else {\n out.push(headerFromSchemaCol(col, rootGetters, pagination, ageColumn));\n }\n }\n\n // Always try to have an identifier\n if ( !hasName ) {\n insertAt(out, 1, nameColumn || idColumn );\n if ( namespaced ) {\n insertAt(out, 2, namespaceColumn);\n }\n }\n\n // Age always goes last\n const ageColumnActual = out.find((o) => o.name.toLocaleLowerCase() === 'age');\n\n if ( ageColumnActual ) {\n removeObject(out, ageColumnActual);\n if ( typeOptions.showAge ) {\n out.push(ageColumnActual);\n }\n }\n\n return out;\n}\n\n/**\n * Given a schema's attribute.column value create a header\n */\nexport function headerFromSchemaColString(colName: string, schema: Schema, rootGetters: VuexStoreGetters, pagination: boolean, ageColumn: TableColumn): TableColumn {\n if (!schema) {\n throw new Error(`Unable to create header for column '${ colName }' from schema: schema is missing`);\n }\n\n const col = schema.attributes.columns.find((c) => c.name === colName);\n\n if (!col) {\n throw new Error(`Unable to find column '${ colName }' in schema '${ schema.id }'`);\n }\n\n return headerFromSchemaCol(col, rootGetters, pagination, ageColumn);\n}\n\n/**\n * Given a schema's attribute.column value create a header\n */\nexport function headerFromSchemaCol(col: SchemaAttributeColumn, rootGetters: VuexStoreGetters, pagination: boolean, ageColumn: TableColumn): TableColumn {\n let formatter, width, formatterOpts;\n\n if ( (col.format === '' || col.format === 'date' || col.type === 'date') && col.name.toLowerCase() === 'age' && ageColumn ) {\n return ageColumn;\n }\n\n if ( col.format === 'date' || col.type === 'date' ) {\n formatter = 'Date';\n width = 120;\n formatterOpts = { multiline: true };\n }\n\n if ( col.type === 'number' || col.type === 'int' ) {\n formatter = 'Number';\n }\n\n const colName = col.name.includes(' ') ? col.name.split(' ').map((word) => word.charAt(0).toUpperCase() + word.substring(1) ).join('') : col.name;\n\n const exists = rootGetters['i18n/exists'];\n const t = rootGetters['i18n/t'];\n const labelKey = `tableHeaders.${ colName.charAt(0).toLowerCase() + colName.slice(1) }`;\n const description = col.description || '';\n const tooltip = description && description[description.length - 1] === '.' ? description.slice(0, -1) : description;\n\n const path = rowValueGetter(col, false) as string;\n // If we're not paginating use a function to get the value, otherwise use the string path\n const altPath = pagination ? path : rowValueGetter(col, true) as Function;\n\n return {\n name: col.name.toLowerCase(),\n label: exists(labelKey) ? t(labelKey) : col.name,\n value: altPath,\n sort: [path],\n search: path,\n formatter,\n formatterOpts,\n width,\n tooltip\n };\n}\n\n/**\n * Rewrite a JSON Path expression, so that it is compatible with the library we use.\n * Specifically, ensure we can handle path keys that contain an escaped '.' character (\\.)\n *\n * For example, this function re-writes the expression:\n * $.metadata.labels.topology\\.kubernetes\\.io/zone\n * to:\n * $.metadata.labels.[\"topology.kubernetes.io/zone\"]\n *\n * @param path JSON Path expression\n * @returns Re-written JSON Path expression\n */\nfunction rewriteJsonPath(path: any): any {\n // Check if we should re-write, otherwise just return the input expression as is\n if (typeof path === 'string' && path.startsWith('$') && path.includes('\\\\.')) {\n const parts = path.split('.');\n let inField = false;\n let res = '';\n\n parts.forEach((part) => {\n let prefix = res.length ? '.' : '';\n\n if (part.endsWith('\\\\')) {\n if (!inField) {\n inField = true;\n prefix = `${ prefix }[\"`;\n }\n\n res = `${ res }${ prefix }${ part.substr(0, part.length - 1) }`;\n } else {\n const postfix = inField ? '\"]' : '';\n\n res += `${ prefix }${ part }${ postfix }`;\n inField = false;\n }\n });\n\n return res;\n }\n\n return path;\n}\n\nexport function rowValueGetter(col: SchemaAttributeColumn, asFn = true): string | ((row: any) => string) {\n // 'field' comes from the schema - typically it is of the form $.metadata.field[N]\n // We will use JsonPath to look up this value, which is costly - so if we can detect this format\n // Use a more efficient function to get the value\n const value = col.field.startsWith('.') ? `$${ col.field }` : col.field;\n const found = value.match(FIELD_REGEX);\n\n if (found && found.length === 2) {\n const fieldIndex = parseInt(found[1], 10);\n\n if (asFn) {\n return (row: any) => row.metadata?.fields?.[fieldIndex];\n }\n\n return `metadata.fields.${ fieldIndex }`;\n }\n\n return rewriteJsonPath(value);\n}\n\ntype conditionalDepaginateArgs ={\n ctx: { rootGetters: VuexStoreGetters},\n args: { type: string, opt: ActionFindAllArgs},\n};\ntype conditionalDepaginateFn = (args: conditionalDepaginateArgs) => boolean\n\n/**\n * Conditionally determine if a resource should use naive kube pagination api to fetch all results\n * (not just first page)\n */\nexport const conditionalDepaginate = (\n depaginate?: conditionalDepaginateFn | boolean,\n depaginateArgs?: conditionalDepaginateArgs\n): boolean => {\n if (typeof depaginate === 'function') {\n return !!depaginateArgs ? depaginate(depaginateArgs) : false;\n }\n\n return depaginate as boolean;\n};\n\n/**\n * Setup a function that will determine if a resource should use native kube pagination api to fetch all resources\n * (not just the first page)\n */\nexport const configureConditionalDepaginate = (\n { maxResourceCount, isNorman = false }: { maxResourceCount: number, isNorman: boolean },\n): conditionalDepaginateFn => {\n return (fnArgs: conditionalDepaginateArgs ): boolean => {\n const { rootGetters } = fnArgs.ctx;\n const { type } = fnArgs.args;\n const safeType = isNorman ? `management.cattle.io.${ type }` : type;\n\n const inStore = rootGetters['currentStore'](safeType);\n const resourceCounts = rootGetters[`${ inStore }/all`](COUNT)[0]?.counts[safeType];\n const resourceCount = resourceCounts?.summary?.count;\n\n return resourceCount !== undefined ? resourceCount < maxResourceCount : false;\n };\n};\n","export const LABEL_SELECT_KINDS = {\n GROUP: 'group',\n DIVIDER: 'divider',\n NONE: 'none',\n};\n\nexport const LABEL_SELECT_NOT_OPTION_KINDS = [\n LABEL_SELECT_KINDS.GROUP,\n LABEL_SELECT_KINDS.DIVIDER,\n];\n\n/**\n * Options used When LabelSelect requests a new page\n */\nexport interface LabelSelectPaginateFnOptions {\n /**\n * Current page\n */\n pageContent: T[],\n /**\n * page number to fetch\n */\n page: number,\n /**\n * number of items in the page to fetch\n */\n pageSize: number,\n /**\n * filter pagination filter. this is just a text string associated with user entered text\n */\n filter: string,\n /**\n * true if the result should only contain the fetched page, false if the result should be added to the pageContent\n */\n resetPage: boolean,\n}\n\n/**\n * Response that LabelSelect needs when it's requested a new page\n */\nexport interface LabelSelectPaginateFnResponse {\n page: T[],\n pages: number,\n total: number\n}\n\n/**\n * Function called when LabelSelect needs a new page\n */\nexport type LabelSelectPaginateFn = (opts: LabelSelectPaginateFnOptions) => Promise>\n","/**\n * Takes the contents of the POD restarts value `1 (2m47s ago)` and splits it into `1` and `2m47s ago`\n */\nexport const POD_RESTARTS_REG_EX = /^(\\d+)\\s*\\(([^)]+)\\)/;\n\n/**\n * POD restarts value can be split into two (restart count and last restarted).\n *\n * This is a special path that Vai uses to sort/filter on the first part (restart count)\n */\nexport const POD_RESTART_FIELD = 'metadata.fields[3][0]';\n\n/**\n * POD restarts value can be split into two (restart count and last restarted).\n *\n * This is a special path that Vai uses to sort/filter on the first part (last restarted)\n */\nexport const POD_LAST_RESTART_FIELD = 'metadata.fields[3][1]';\n","import { NAMESPACE_FILTER_NS_FULL_PREFIX, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';\nimport { KubeLabelSelector } from '@shell/types/kube/kube-api';\n\n// Pagination Typing\n// These structures are designed to offer both convenience and flexibility based on a common structure and are\n// converted to the url param format as per https://github.com/rancher/steve.\n//\n// Simple use cases such as filtering by a single param should be easy to use.\n// More complex filtering (and'ing and 'or'ing multiple fields) is also supported.\n//\n// The top level object `PaginationArgs` contains all properties that will be converted to url params\n//\n// The two important / complex params are currently\n// - `filter` https://github.com/rancher/steve?tab=readme-ov-file#filter\n// - represented by `PaginationParamFilter extends PaginationParam`\n// - a filter has filter fields which are made up of a field name, equality and value/s\n// - filter=\n// - Examples\n// - filter=metadata.name=123\n// - filter=metadata.name=123,metadata.name=456 (name is 123 OR 456)\n// - filter=metadata.name=123&filter=metadata.namespace=abc (name 123 AND namespace abc)\n// - `projectsornamespaces` https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces\n// - represented by `PaginationParamProjectOrNamespace extends PaginationParam`\n// - Examples\n// - projectsornamespaces=123\n// - projectsornamespaces=123,456 (projects or namespaces that have id 123 OR 456)\n//\n//\n// Some of the types below are defined using classes instead of TS types/interfaces\n// - Avoid making complex json objects by using clearer instance constructors\n// - Better documented\n// - Defaults (a lot of the time convenience > utility)\n// - Adds some kind of typing in pure js docs\n// - class ctor links to definition, instead of object just being a random json blob)\n// - helps VSCode jsdoc highlighting\n\n/**\n * Sort the pagination result\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#sort\n */\nexport interface PaginationSort {\n /**\n * Name of field within the object to sort by\n */\n field: string,\n /**\n * Sort direction. `true` for ascending, `false` for descending\n */\n asc: boolean\n}\n\n/**\n * Equalities that can be used with a `filter` query param\n *\n * `filter=`\n *\n * For example\n * - filter=a=b\n * - filter=a!=b\n * - filter=a NOT IN (b,c,d)\n */\nexport const enum PaginationFilterEquality {\n /**\n * Field is in a collection of values\n */\n IN = ' IN ', // eslint-disable-line no-unused-vars\n /**\n * Field is not in a collection of values\n */\n NOT_IN = ' NOTIN ', // eslint-disable-line no-unused-vars\n /**\n * Field matches a value\n */\n EQUALS= '=', // eslint-disable-line no-unused-vars\n /**\n * Field does not match a value\n */\n NOT_EQUALS = '!=', // eslint-disable-line no-unused-vars\n /**\n * Unknown\n */\n STRICT_EQUALS = '==', // eslint-disable-line no-unused-vars\n /**\n * Field must partially match a value\n */\n CONTAINS = '~', // eslint-disable-line no-unused-vars\n /**\n * Field must not partially match a value\n */\n NOT_CONTAINS = '!~', // eslint-disable-line no-unused-vars\n /**\n * Field must be greater than a value\n */\n GREATER_THAN = 'gt', // eslint-disable-line no-unused-vars\n /**\n * Field must be less than a value\n */\n LESS_THAN = 'lt', // eslint-disable-line no-unused-vars\n}\n\n/**\n * Ctor args for a @PaginationFilterField\n */\ntype FilterFieldCtorArgs = {\n /**\n * Name of field within the object to filter by for example the x of x=y\n *\n * This can be optional for some (projectsornamespaces)\n */\n field?: string;\n /**\n * Value of field within the object to filter by for example the y of x=y\n *\n * This can be empty if `exists` is true\n */\n value?: string;\n /**\n * Equality field within the object to filter by for example the `=` or `!=` of x=y\n *\n * @deprecated Please use `equality` instead of equals and exact\n */\n equals?: boolean;\n /**\n * Match the field exactly. False for partial matches\n *\n * Value: pod1\n * Exact: true. \"p\" no, \"pod\", no, \"pod1\" yes\n * Exact: false. \"p\" yes, \"pod\", yes, \"pod1\" yes\n *\n * @deprecated Please use `equality` instead of equals and exact\n */\n exact?: boolean,\n /**\n * Check if the field/property exists, regardless of value\n *\n * If this is false it does not flip the expectation, just doesn't add the field\n */\n exists?: boolean,\n /**\n * Equality symbol used to compare the field with the value\n */\n equality?: PaginationFilterEquality\n}\n\n/**\n * Filter the pagination result by these specific fields\n *\n * In format of ``\n *\n * For example\n *\n * - metadata.name=test\n * - metadata.namespace!=system\n *\n * These are sub items for {@link PaginationParam}, for example `filter=`\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#query-parameters\n */\nexport class PaginationFilterField {\n /**\n * Name of field within the object to filter by for example the x of x=y\n *\n * This can be optional for some (projectsornamespaces)\n */\n field?: string;\n /**\n * Value of field within the object to filter by for example the y of x=y\n *\n * This can be empty if `exists` is true\n */\n value?: string;\n /**\n * Equality field within the object to filter by for example the `=` or `!=` of x=y\n *\n * @deprecated Please use `equality` instead of equals and exact\n */\n equals?: boolean;\n /**\n * Match the field exactly. False for partial matches\n *\n * Value: pod1\n * Exact: true. \"p\" no, \"pod\", no, \"pod1\" yes\n * Exact: false. \"p\" yes, \"pod\", yes, \"pod1\" yes\n *\n * @deprecated Please use `equality` instead of equals and exact\n */\n exact?: boolean;\n /**\n * Equality symbol used to compare the field with the value\n */\n equality?: PaginationFilterEquality;\n /**\n * Check if the field/property exists, regardless of value\n *\n * If this is false it does not flip the expectation, just doesn't add the field\n */\n exists?: boolean;\n\n constructor(args: FilterFieldCtorArgs) {\n const {\n field, value = '', equals = true, exact = true, equality = undefined, exists = false\n } = args;\n\n this.field = field;\n this.value = value;\n this.equals = equals;\n this.exact = exact;\n this.exists = exists;\n\n const _equality = PaginationFilterField.safeEquality({\n field, value, equals, exact, equality, exists\n });\n\n if (_equality) {\n this.equality = _equality;\n } else {\n throw new Error('A pagination filter must have either equals or equality set');\n }\n }\n\n /**\n * Determine equality for this field.\n *\n * Mainly to ensure legacy objects using deprecated fields instead of new equality field fall back on something sensible\n */\n static safeEquality(args: FilterFieldCtorArgs | PaginationFilterField): PaginationFilterEquality | undefined {\n if (args.equality) {\n return args.equality;\n }\n\n if (args.equals === true) {\n if (args.exact === true) {\n return PaginationFilterEquality.EQUALS;\n } else {\n return PaginationFilterEquality.CONTAINS;\n }\n } else if (args.equals === false) {\n if (args.exact === true) {\n return PaginationFilterEquality.NOT_EQUALS;\n } else {\n return PaginationFilterEquality.NOT_CONTAINS;\n }\n }\n }\n}\n\n/**\n * Represents filter like params, for example\n *\n * - `filter=abc!=xyz&def=123`\n * - `projectsornamespace!=p-3456`\n *\n * ### Params\n * #### Filter\n * - For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#filter\n *\n * #### Projects Or Namespace\n * - For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces\n *\n * ### Combining Params\n * Params can be combined in two logical ways\n *\n * 1) AND\n * - Used when you would like to filter by something like a=1 AND b=2 AND c=3\n * - To do this multiple instances of `PaginationParam` are used in an array\n * - Object Structure\n * ```\n * [\n * PaginationParam,\n * PaginationParam,\n * PaginationParam\n * ]\n * ```\n * - Results in url\n * ```\n * filter=a=1&filter=b=2&filter=c=3\n * ```\n * - Examples\n * - `filter=metadata.namespace=abc&filter=metadata.name=123,property=123`\n * 2) OR\n * - Used when you would like to filter by something like a=1 OR b=2 OR c=3\n * - To do this multiple fields within a single PaginationParam is used\n * - Object Structure\n * ```\n * [\n * PaginationParam {\n * PaginationFilterField,\n * PaginationFilterField,\n * PaginationFilterField\n * }\n * ]\n * ```\n * - Results in url\n * ```\n * filter=a=1,b=2,c=3\n * ```\n *\n * - For example `filter=a=1,b=2,c=3`\n *\n *\n * This structure should give enough flexibility to cover all uses.\n *\n *\n */\nexport abstract class PaginationParam {\n /**\n * Query Param. For example `filter` or `projectsornamespaces`\n */\n param: string;\n /**\n * should fields equal param.\n *\n * For example projectsornamexspaces=x or projectsornamexspaces!=x\n */\n equals: boolean;\n /**\n * Fields to filter by\n *\n * For example metadata.namespace=abc OR metadata.namespace=xyz\n */\n fields: PaginationFilterField[];\n\n constructor(\n { param, equals = true, fields = [] }:\n {\n param: string;\n /**\n * should param equal fields\n *\n * For definition see {@link PaginationParam} `equals`\n */\n equals?: boolean;\n /**\n * Collection of fields to filter by\n *\n * For definition see {@link PaginationParam} `fields`\n */\n fields?: PaginationFilterField[];\n }) {\n this.param = param;\n this.equals = equals;\n this.fields = fields;\n }\n}\n\n/**\n * This is a convenience class for the `filter` param which works some magic, adds defaults and converts to the required PaginationParam format.\n *\n * for example\n *\n * - filter=???\n *\n * including `fields` this could be\n *\n * - filter=a=b\n *\n * See description for {@link PaginationParam} for how multiple of these can be combined together to AND or OR together\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#filter\n */\nexport class PaginationParamFilter extends PaginationParam {\n constructor(\n { equals = true, fields = [] }:\n {\n /**\n * should param equal fields\n *\n * For definition see {@link PaginationParam} `equals`\n */\n equals?: boolean;\n /**\n * Collection of fields to filter by.\n *\n * Fields are ORd together\n *\n * For definition see {@link PaginationParam} `fields`\n */\n fields?: PaginationFilterField[];\n }\n ) {\n super({\n param: 'filter',\n equals,\n fields\n });\n }\n\n /**\n * Convenience method when you just want an instance of {@link PaginationParamFilter} with a simple `filter=x=y` param\n */\n static createSingleField(field: FilterFieldCtorArgs): PaginationParam {\n return new PaginationParamFilter({ fields: [new PaginationFilterField(field)] });\n }\n\n /**\n * Convenience method when you just want an instance of {@link PaginationParamFilter} with a simple `filter=a=1,b=2,c=3` PaginationParam\n *\n * These will be OR'd together\n */\n static createMultipleFields(fields: PaginationFilterField[]): PaginationParam {\n return new PaginationParamFilter({ fields });\n }\n}\n\n/**\n * This is a convenience class for the `projectsornamespaces` param which works some magic, adds defaults and converts to the required PaginationParam format\n *\n * See description for {@link PaginationParam} for how multiple of these can be combined together to AND or OR together\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces\n */\nexport class PaginationParamProjectOrNamespace extends PaginationParam {\n constructor(\n { equals = true, projectOrNamespace = [] }:\n {\n /**\n * should param equal fields\n * For definition see {@link PaginationParam} `equals`\n */\n equals?: boolean;\n /**\n * Collection of projects / namespace id's to filter by\n *\n * These are OR'd together\n *\n * For clarification on definition see {@link PaginationFilterField}\n */\n projectOrNamespace?: string[];\n }\n ) {\n const safeFields = projectOrNamespace.map((f) => {\n return new PaginationFilterField({\n value: f\n .replace(NAMESPACE_FILTER_NS_FULL_PREFIX, '')\n .replace(NAMESPACE_FILTER_P_FULL_PREFIX, '')\n });\n });\n\n super({\n param: 'projectsornamespaces',\n equals,\n fields: safeFields\n });\n }\n}\n\n/**\n * Pagination settings sent to actions and persisted to store\n *\n * Use this for making pagination requests that utilise the new vai cache backed API\n */\nexport class PaginationArgs {\n /**\n * Page number to fetch\n */\n page: number | null;\n /**\n * Number of results in the page\n */\n pageSize?: number | null;\n /**\n * Sort the results\n *\n * For more info see {@link PaginationSort}\n */\n sort: PaginationSort[];\n /**\n * A collection of traditional `filter` params covering logic such as x is y, x is like y, x is not y\n *\n * For more info see {@link PaginationParamFilter}\n */\n filters: PaginationParamFilter[];\n /**\n * A collection of `projectsornamespace` params\n *\n * For more info see {@link PaginationParamProjectOrNamespace}\n */\n projectsOrNamespaces: PaginationParamProjectOrNamespace[];\n\n /**\n * Traditional Kube labelSelector consisting of matchLabels and matchExpressions\n */\n labelSelector?: KubeLabelSelector;\n\n /**\n * Creates an instance of PaginationArgs.\n *\n * Contains defaults to avoid creating complex json objects all the time\n */\n constructor({\n page = 1,\n pageSize = 10,\n sort = [],\n filters = [],\n projectsOrNamespaces = [],\n labelSelector = undefined,\n }:\n // This would be neater as just Partial but we lose all jsdoc\n {\n /**\n * For definition see {@link PaginationArgs} `page`\n */\n page?: number | null,\n /**\n * For definition see {@link PaginationArgs} `pageSize`\n */\n pageSize?: number | null,\n /**\n * For definition see {@link PaginationArgs} `sort`\n */\n sort?: PaginationSort[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `filters`\n */\n filters?: PaginationParamFilter | PaginationParamFilter[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `projectsOrNamespaces`\n */\n projectsOrNamespaces?: PaginationParamProjectOrNamespace | PaginationParamProjectOrNamespace[],\n /**\n * Traditional Kube labelSelector consisting of matchLabels and matchExpressions\n */\n labelSelector?: KubeLabelSelector,\n }) {\n this.page = page;\n this.pageSize = pageSize;\n this.sort = sort;\n if (filters) {\n this.filters = Array.isArray(filters) ? filters : [filters];\n } else {\n this.filters = [];\n }\n if (projectsOrNamespaces) {\n this.projectsOrNamespaces = Array.isArray(projectsOrNamespaces) ? projectsOrNamespaces : [projectsOrNamespaces];\n } else {\n this.projectsOrNamespaces = [];\n }\n this.labelSelector = labelSelector;\n }\n}\n\n/**\n * Wrapper around {@link PaginationArgs}\n *\n * Use this for making requests that utilise filtering backed by the new vai cache backed API\n */\nexport class FilterArgs extends PaginationArgs {\n /**\n * Creates an instance of PaginationArgs.\n *\n * Contains defaults to avoid creating complex json objects all the time\n */\n constructor({\n sort = [],\n filters = [],\n projectsOrNamespaces = [],\n labelSelector = undefined,\n }:\n // This would be neater as just Partial but we lose all jsdoc\n {\n /**\n * For definition see {@link PaginationArgs} `sort`\n */\n sort?: PaginationSort[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `filters`\n */\n filters?: PaginationParamFilter | PaginationParamFilter[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `projectsOrNamespaces`\n */\n projectsOrNamespaces?: PaginationParamProjectOrNamespace | PaginationParamProjectOrNamespace[],\n /**\n * Traditional Kube labelSelector consisting of matchLabels and matchExpressions\n */\n labelSelector?: KubeLabelSelector\n }) {\n super({\n page: null, pageSize: null, sort, filters, projectsOrNamespaces, labelSelector\n });\n }\n}\n\n/**\n * Overall result of a pagination request.\n *\n * Does not contain actual resources but overall stats (count, pages, etc)\n */\nexport interface StorePaginationResult {\n count: number,\n pages: number,\n /**\n * The last time the resource was updated. Used to assist list watching for changes\n */\n timestamp: number,\n revision: string,\n}\n\nexport interface StorePaginationRequest {\n /**\n * The single namespace to filter results by (as part of url path, not pagination params)\n */\n namespace?: string,\n\n /**\n * The set of pagination args used to create the request\n */\n pagination: PaginationArgs,\n\n /**\n * Does this request stem from a list with manual refresh?\n */\n hasManualRefresh?: boolean,\n\n /**\n * When making a supporting HTTP request include associated resource data\n */\n includeAssociatedData?: boolean,\n}\n\n/**\n * Pagination settings\n * - what was requested\n * - what was received (minus actual resources)\n *\n * Object is persisted to store\n */\nexport interface StorePagination {\n /**\n * Collection of args that is used to make the request\n */\n request: StorePaginationRequest,\n\n /**\n * Information in the response outside of the actual resources returned\n */\n result: StorePaginationResult\n}\n\n/**\n * The resource and context that the pagination request will be used\n *\n * Used to determine if the request is supported\n*/\nexport interface PaginationResourceContext {\n store: string,\n resource?: {\n id: string,\n context?: string,\n }\n}\n","/* eslint-disable no-unused-vars */\nexport enum STEVE_WATCH_MODE {\n DEFAULT = '',\n RESOURCE_CHANGES = 'resource.changes'\n}\n/* eslint-enable no-unused-vars */\n\n/* eslint-disable no-unused-vars */\nexport enum STEVE_WATCH_EVENT_TYPES {\n START = 'resource.start',\n CREATE = 'resource.create',\n CHANGE = 'resource.change',\n CHANGES = 'resource.changes',\n REMOVE = 'resource.resource.remove',\n ERROR = 'resource.error',\n STOP = 'resource.stop',\n}\n/* eslint-enable no-unused-vars */\n\nexport type STEVE_WATCH_EVENT_TYPES_NAMES = `${ STEVE_WATCH_EVENT_TYPES }`;\n\n/**\n * The content of the web socket messages sent (and partially received back from) steve\n */\nexport interface STEVE_WATCH_PARAMS {\n type: string,\n selector?: string,\n id?: string,\n revision?: string,\n namespace?: string,\n stop?: boolean,\n force?: boolean,\n forceWatch?: boolean,\n mode?: STEVE_WATCH_MODE\n}\n","\n/**\n * interface for type-map's' definition for table headers/columns\n */\nexport interface TableColumn {\n name: string,\n label?: string,\n value: any,\n sort?: string | string[],\n formatter?: string,\n formatterOpts?: any,\n width?: number,\n tooltip?: string,\n search?: string | boolean,\n}\n\nexport const COLUMN_BREAKPOINTS = {\n /**\n * Only show column if at tablet width or wider\n */\n TABLET: 'tablet',\n /**\n * Only show column if at laptop width or wider\n */\n LAPTOP: 'laptop',\n /**\n * Only show column if at desktop width or wider\n */\n DESKTOP: 'desktop'\n};\n","import xor from 'lodash/xor';\nimport { get, isEqual } from '@shell/utils/object';\n\nexport function removeObject(ary: T[], obj: T): T[] {\n const idx = ary.indexOf(obj);\n\n if ( idx >= 0 ) {\n ary.splice(idx, 1);\n }\n\n return ary;\n}\n\nexport function removeObjects(ary: T[], objs: T[]): T[] {\n let i;\n let indexes = [];\n\n for ( i = 0 ; i < objs.length ; i++ ) {\n let idx = ary.indexOf(objs[i]);\n\n // Find multiple copies of the same value\n while ( idx !== -1 ) {\n indexes.push(idx);\n idx = ary.indexOf(objs[i], idx + 1);\n }\n }\n\n if ( !indexes.length ) {\n // That was easy...\n return ary;\n }\n\n indexes = indexes.sort((a, b) => a - b);\n\n const ranges = [];\n let first: number;\n let last: number;\n\n // Group all the indexes into contiguous ranges\n while ( indexes.length ) {\n first = indexes.shift() as number;\n last = first;\n\n while ( indexes.length && indexes[0] === last + 1 ) {\n last = indexes.shift() as number;\n }\n\n ranges.push({ start: first, end: last });\n }\n\n // Remove the items by range\n for ( i = ranges.length - 1 ; i >= 0 ; i--) {\n const { start, end } = ranges[i];\n\n ary.splice(start, end - start + 1);\n }\n\n return ary;\n}\n\nexport function addObject(ary: T[], obj: T): void {\n const idx = ary.indexOf(obj);\n\n if ( idx === -1 ) {\n ary.push(obj);\n }\n}\n\nexport function addObjects(ary: T[], objs: T[]): void {\n const unique: T[] = [];\n\n for ( const obj of objs ) {\n if ( !ary.includes(obj) && !unique.includes(obj) ) {\n unique.push(obj);\n }\n }\n\n ary.push(...unique);\n}\n\nexport function insertAt(ary: T[], idx: number, ...objs: T[]): void {\n ary.splice(idx, 0, ...objs);\n}\n\nexport function isArray(thing: T[] | unknown): boolean {\n return Array.isArray(thing);\n}\n\nexport function removeAt(ary: T[], idx: number, length = 1): T[] {\n if ( idx < 0 ) {\n throw new Error('Index too low');\n }\n\n if ( idx + length > ary.length ) {\n throw new Error('Index + length too high');\n }\n\n ary.splice(idx, length);\n\n return ary;\n}\n\nexport function clear(ary: T[]): void {\n ary.splice(0, ary.length);\n}\n\nexport function replaceWith(ary: T[], ...values: T[]): void {\n ary.splice(0, ary.length, ...values);\n}\n\nfunction findOrFilterBy(\n method: 'filter', ary: T[] | null, keyOrObj: string | K, val?: V\n): T[];\nfunction findOrFilterBy(\n method: 'find', ary: T[] | null, keyOrObj: string | K, val?: V\n): T;\nfunction findOrFilterBy(\n method: keyof T[], ary: T[] | null, keyOrObj: string | K, val?: V\n): T[] {\n ary = ary || [];\n\n if ( typeof keyOrObj === 'object' ) {\n return (ary[method] as Function)((item: T) => {\n for ( const path in keyOrObj ) {\n const want = keyOrObj[path];\n const have = get(item, path);\n\n if ( typeof want === 'undefined' ) {\n if ( !have ) {\n return false;\n }\n } else if ( have !== want ) {\n return false;\n }\n }\n\n return true;\n });\n } else if ( val === undefined ) {\n return (ary[method] as Function)((item: T) => !!get(item, keyOrObj));\n } else {\n return (ary[method] as Function)((item: T) => get(item, keyOrObj) === val);\n }\n}\n\nexport function filterBy(\n ary: T[] | null, keyOrObj: string | K, val?: V\n): T[] {\n return findOrFilterBy('filter', ary, keyOrObj, val);\n}\n\nexport function findBy(\n ary: T[] | null, keyOrObj: string | K, val?: V\n): T {\n return findOrFilterBy('find', ary, keyOrObj, val);\n}\n\nexport function findStringIndex(items: string[], item: string, trim = true): number {\n return items.indexOf(trim ? item?.trim() : item);\n}\n\nexport function hasDuplicatedStrings(items: string[], caseSensitive = true): boolean {\n const normalizedItems = items.map((i) => (caseSensitive ? i : i.toLowerCase()).trim());\n\n for (let i = 0; i < items.length; i++) {\n const index = findStringIndex(\n normalizedItems,\n (caseSensitive ? items[i] : items[i].toLowerCase()),\n );\n\n if (i !== index) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function sameContents(aryA: T[], aryB: T[]): boolean {\n return xor(aryA, aryB).length === 0;\n}\n\nexport function sameArrayObjects(aryA: T[], aryB: T[], positionAgnostic = false): boolean {\n if (!aryA && !aryB) {\n // catch calls from js (where props aren't type checked)\n return false;\n }\n if (aryA?.length !== aryB?.length) {\n // catch one null and not t'other, and different lengths\n return false;\n }\n\n if (positionAgnostic) {\n const consumedB: { [pos: number]: boolean } = {};\n\n aryB.forEach((_, index) => {\n consumedB[index] = false;\n });\n\n for (let i = 0; i < aryA.length; i++) {\n const a = aryA[i];\n\n const validA = aryB.findIndex((arB, index) => isEqual(arB, a) && !consumedB[index] );\n\n if (validA >= 0) {\n consumedB[validA] = true;\n } else {\n return false;\n }\n }\n } else {\n for (let i = 0; i < aryA.length; i++) {\n if (!isEqual(aryA[i], aryB[i])) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function uniq(ary: T[]): T[] {\n const out: T[] = [];\n\n addObjects(out, ary);\n\n return out;\n}\n\nexport function concatStrings(a: string[], b: string[]): string[] {\n return [...a.map((aa) => b.map((bb) => aa.concat(bb)))].reduce((acc, arr) => [...arr, ...acc], []);\n}\n\n/**\n * Join list as string into a new string without duplicates\n * @param {string} a 'a b c'\n * @param {string} b 'b c d'\n * @param {string} [separator=' ']\n * @return {string} 'a b c d'\n */\nexport const joinStringList = (a: string, b: string, separator = ' '): string => {\n const all = a.split(separator).concat(b.split(separator));\n\n return [...new Set(all)].join(separator);\n};\n","export const waitFor = (testFn: Function, msg = '', timeoutMs = 3000000, intervalMs = 500, log = false): Promise => {\n gatedLog('Starting wait for', msg);\n\n return new Promise((resolve, reject) => {\n if (testFn()) {\n gatedLog('Wait for', msg || 'unknown', 'done immediately');\n resolve(this);\n }\n const timeout = setTimeout(() => {\n gatedLog('Wait for', msg, 'timed out');\n clearInterval(interval);\n clearTimeout(timeout);\n reject(new Error(msg ? `Failed waiting for: ${ msg }` : `waitFor timed out after ${ timeoutMs / 1000 } seconds`));\n }, timeoutMs);\n const interval = setInterval(() => {\n if ( testFn() ) {\n gatedLog('Wait for', msg, 'done');\n clearInterval(interval);\n clearTimeout(timeout);\n resolve(this);\n } else if (msg) {\n gatedLog('Wait for', msg, 'not done yet');\n }\n }, intervalMs);\n });\n\n function gatedLog(...args: any[]) {\n if (log) {\n console.log(...args); // eslint-disable-line no-console\n }\n }\n};\n\nexport const wait = (milliseconds: number): Promise => new Promise((resolve) => setTimeout(resolve, milliseconds));\n","import { requireJson } from '@shell/utils/require-asset';\n\n/**\n * Brand/Theme metadata\n */\nexport interface BrandMeta {\n // Does the banner have a stylesheet?\n hasStylesheet?: string;\n banner?: {\n // Text alignment for the banner text overlayed on the banner image\n textAlign?: string;\n }\n}\n\n/**\n * Get the brand/theme meta information for the specified brand\n *\n * @param brand - The brand identifier\n * @returns Brand meta information or empty object if none available\n */\nexport function getBrandMeta(brand: string): BrandMeta {\n let brandMeta: BrandMeta = {};\n\n if (brand) {\n try {\n brandMeta = requireJson(`~shell/assets/brand/${ brand }/metadata.json`) as BrandMeta;\n } catch {}\n }\n\n return brandMeta;\n}\n","import { isEmpty, isEqual } from 'lodash';\nimport {\n BundleDeploymentResource,\n BundleResourceKey,\n BundleDeployment,\n BundleDeploymentStatus,\n Condition,\n} from '@shell/types/resources/fleet';\nimport { mapStateToEnum, STATES_ENUM, STATES } from '@shell/plugins/dashboard-store/resource-class';\nimport { FLEET as FLEET_LABELS, CAPI } from '@shell/config/labels-annotations';\nimport { NAME as EXPLORER_NAME } from '@shell/config/product/explorer';\nimport { FleetDashboardState, FleetResourceState, Target, TargetMode } from '@shell/types/fleet';\nimport { FLEET, VIRTUAL_HARVESTER_PROVIDER } from '@shell/config/types';\n\ninterface Resource extends BundleDeploymentResource {\n state: string,\n}\n\ntype Labels = {\n [key: string]: string,\n}\n\nfunction resourceKey(r: BundleResourceKey): string {\n return `${ r.kind }/${ r.namespace }/${ r.name }`;\n}\n\nfunction conditionIsTrue(conditions: Condition[] | undefined, type: string): boolean {\n if (!conditions) {\n return false;\n }\n\n return !!conditions.find((c) => c.type === type && c.status.toLowerCase() === 'true');\n}\n\nclass Application {\n /**\n * gitrepos/helmops are already restricted to clusters in their own namespace\n *\n * this empty selector means all applicable clusters will be selected\n */\n includeAllWorkgroupRule = { clusterSelector: { matchExpressions: [] } }\n\n excludeHarvesterRule = {\n clusterSelector: {\n matchExpressions: [{\n key: CAPI.PROVIDER,\n operator: 'NotIn',\n values: [\n VIRTUAL_HARVESTER_PROVIDER\n ],\n }],\n },\n };\n\n getTargetMode(targets: Target[], namespace: string, areHarvesterHostsVisible: boolean): TargetMode {\n if (namespace === 'fleet-local') {\n return 'local';\n }\n\n if (!targets.length) {\n return 'none';\n }\n\n let mode: TargetMode = 'all';\n\n for (const target of targets) {\n const {\n clusterName,\n clusterSelector,\n clusterGroup,\n clusterGroupSelector,\n } = target;\n\n if (clusterGroupSelector) {\n return 'advanced';\n }\n\n if (clusterName || clusterGroup) {\n mode = 'clusters';\n }\n\n if (!isEmpty(clusterSelector)) {\n mode = 'clusters';\n }\n }\n\n const normalized = [...targets].map((target) => {\n delete target.name;\n\n return target;\n });\n\n // Check if targets contains only harvester rule or no rule at all after name normalizing\n // That means the ALL option has been selected previously\n // one case for feature harvester-baremetal-container-workload ON\n // and another for feature harvester-baremetal-container-workload OFF\n if (isEqual(normalized, [this.includeAllWorkgroupRule]) || isEqual(normalized, [this.excludeHarvesterRule])) {\n mode = 'all';\n }\n\n return mode;\n }\n}\n\nclass Fleet {\n resourceIcons = {\n [FLEET.GIT_REPO]: 'icon icon-github',\n [FLEET.HELM_OP]: 'icon icon-helm',\n };\n\n dashboardIcons = {\n [FLEET.GIT_REPO]: 'icon icon-git',\n [FLEET.HELM_OP]: 'icon icon-helm',\n };\n\n dashboardStates: FleetDashboardState[] = [\n {\n index: 0,\n id: 'error',\n label: 'Error',\n color: '#F64747',\n icon: 'icon icon-error',\n stateBackground: 'bg-error'\n },\n {\n index: 1,\n id: 'warning',\n label: 'Warning',\n color: '#DAC342',\n icon: 'icon icon-warning',\n stateBackground: 'bg-warning'\n },\n {\n index: 2,\n id: 'success',\n label: 'Active',\n color: '#5D995D',\n icon: 'icon icon-checkmark',\n stateBackground: 'bg-success'\n },\n {\n index: 3,\n id: 'info',\n label: 'Pending',\n color: '#3d98d3',\n icon: 'icon icon-warning',\n stateBackground: 'bg-info'\n },\n ];\n\n Application = new Application();\n\n GIT_HTTPS_REGEX = /^https?:\\/\\/github\\.com\\/(.*?)(\\.git)?\\/*$/;\n GIT_SSH_REGEX = /^git@github\\.com:.*\\.git$/;\n HTTP_REGEX = /^(https?:\\/\\/[^\\s]+)$/;\n OCI_REGEX = /^oci:\\/\\//;\n\n quacksLikeAHash(str: string) {\n if (str.match(/^[a-f0-9]{40,}$/i)) {\n return true;\n }\n\n return false;\n }\n\n parseSSHUrl(url: string) {\n const parts = (url || '').split(':');\n\n const sshUserAndHost = parts[0];\n const repoPath = parts[1]?.replace('.git', '');\n\n return {\n sshUserAndHost,\n repoPath\n };\n }\n\n resourceId(r: BundleResourceKey): string {\n return r.namespace ? `${ r.namespace }/${ r.name }` : r.name;\n }\n\n /**\n * resourceType normalizes APIVersion and Kind from a Resources into a single string\n */\n resourceType(r: Resource): string {\n // ported from https://github.com/rancher/fleet/blob/v0.10.0/internal/cmd/controller/grutil/resourcekey.go#L116-L128\n const type = r.kind.toLowerCase();\n\n if (!r.apiVersion || r.apiVersion === 'v1') {\n return type;\n }\n\n return `${ r.apiVersion.split('/', 2)[0] }.${ type }`;\n }\n\n detailLocation(r: Resource, mgmtClusterName: string): any {\n const location = mapStateToEnum(r.state) === STATES_ENUM.MISSING ? undefined : {\n name: `c-cluster-product-resource${ r.namespace ? '-namespace' : '' }-id`,\n params: {\n product: EXPLORER_NAME,\n cluster: mgmtClusterName,\n resource: this.resourceType(r),\n namespace: r.namespace,\n id: r.name,\n },\n };\n\n // Having an undefined param can yield a console warning like [Vue Router warn]: Discarded invalid param(s) \"namespace\" when navigating\n if (location && !location.params.namespace) {\n delete location.params.namespace;\n }\n\n return location;\n }\n\n /**\n * resourcesFromBundleDeploymentStatus extracts the list of resources deployed by a BundleDeployment\n */\n resourcesFromBundleDeploymentStatus(status: BundleDeploymentStatus): Resource[] {\n // status.resources includes of resources that were deployed by Fleet *and still exist in the cluster*\n // Use a map to avoid `find` over and over again\n const resources = (status?.resources || []).reduce((res, r) => {\n res[resourceKey(r)] = Object.assign({ state: STATES_ENUM.READY }, r);\n\n return res;\n }, {} as { [resourceKey: string]: Resource });\n\n const modified: Resource[] = [];\n\n for (const r of status?.modifiedStatus || []) {\n const state = r.missing ? STATES_ENUM.MISSING : r.delete ? STATES_ENUM.ORPHANED : STATES_ENUM.MODIFIED;\n const found: Resource = resources[resourceKey(r)];\n\n // Depending on the state, the same resource can appear in both fields\n if (found) {\n found.state = state;\n } else {\n modified.push(Object.assign({ state }, r));\n }\n }\n for (const r of status?.nonReadyStatus || []) {\n const state = r.summary?.state || STATES_ENUM.UNKNOWN;\n const found: Resource = resources[resourceKey(r)];\n\n if (found) {\n found.state = state;\n }\n }\n\n return modified.concat(Object.values(resources));\n }\n\n clusterIdFromBundleDeploymentLabels(labels?: Labels): string {\n const clusterNamespace = labels?.[FLEET_LABELS.CLUSTER_NAMESPACE];\n const clusterName = labels?.[FLEET_LABELS.CLUSTER];\n\n return `${ clusterNamespace }/${ clusterName }`;\n }\n\n bundleIdFromBundleDeploymentLabels(labels?: Labels): string {\n const bundleNamespace = labels?.[FLEET_LABELS.BUNDLE_NAMESPACE];\n const bundleName = labels?.[FLEET_LABELS.BUNDLE_NAME];\n\n return `${ bundleNamespace }/${ bundleName }`;\n }\n\n bundleDeploymentState(bd: BundleDeployment): string {\n // Ported from https://github.com/rancher/fleet/blob/534dbfdd6f74caf97bccd4cf977e42c5009b2432/internal/cmd/controller/summary/summary.go#L89\n if (bd.status?.appliedDeploymentId !== bd.spec.deploymentId) {\n return conditionIsTrue(bd.status?.conditions, 'Deployed') ? STATES_ENUM.WAIT_APPLIED : STATES_ENUM.ERR_APPLIED;\n } else if (!bd.status?.ready) {\n return STATES_ENUM.NOT_READY;\n } else if (bd.spec.deploymentId !== bd.spec.stagedDeploymentId) {\n return STATES_ENUM.OUT_OF_SYNC;\n } else if (!bd.status?.nonModified) {\n return STATES_ENUM.MODIFIED;\n } else {\n return STATES_ENUM.READY;\n }\n }\n\n getResourcesDefaultState(labelGetter: (key: string, args: any, fallback: any) => Record, stateKey: string): Record {\n return [\n STATES_ENUM.READY,\n STATES_ENUM.NOT_READY,\n STATES_ENUM.WAIT_APPLIED,\n STATES_ENUM.MODIFIED,\n STATES_ENUM.MISSING,\n STATES_ENUM.ORPHANED,\n STATES_ENUM.UNKNOWN,\n ].reduce((acc: Record, state) => {\n acc[state] = {\n count: 0,\n color: STATES[state].color,\n label: labelGetter(`${ stateKey }.${ state }`, null, STATES[state].label ),\n status: state\n };\n\n return acc;\n }, {});\n }\n\n getBundlesDefaultState(labelGetter: (key: string, args: any, fallback: any) => Record, stateKey: string): Record {\n return [\n STATES_ENUM.READY,\n STATES_ENUM.INFO,\n STATES_ENUM.WARNING,\n STATES_ENUM.NOT_READY,\n STATES_ENUM.ERROR,\n STATES_ENUM.ERR_APPLIED,\n STATES_ENUM.WAIT_APPLIED,\n STATES_ENUM.UNKNOWN,\n ].reduce((acc: Record, state) => {\n acc[state] = {\n count: 0,\n color: STATES[state].color,\n label: labelGetter(`${ stateKey }.${ state }`, null, STATES[state].label ),\n status: state\n };\n\n return acc;\n }, {});\n }\n\n getDashboardStateId(resource: { stateColor: string }): string {\n return resource?.stateColor?.replace('text-', '') || 'warning';\n }\n\n getDashboardState(resource: { stateColor: string }): FleetDashboardState | {} {\n const stateId = this.getDashboardStateId(resource);\n\n return this.dashboardStates.find(({ id }) => stateId === id) || {};\n }\n}\n\nconst instance = new Fleet();\n\nexport default instance;\n","export type GC_PREFERENCES = {\n enabled: boolean,\n enabledInterval: boolean,\n interval: number,\n enabledOnNavigate: boolean,\n ageThreshold: number,\n countThreshold: number\n}\n\nexport const GC_DEFAULTS: GC_PREFERENCES = {\n enabled: false,\n\n // When GC Runs\n enabledInterval: true,\n interval: 1 * 60 * 5,\n enabledOnNavigate: true,\n\n // How GC handles resources when GC'ing\n ageThreshold: 1 * 60 * 2,\n countThreshold: 500,\n};\n","import { SETTING } from '@shell/config/settings';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { GC_DEFAULTS, GC_PREFERENCES } from './gc-types';\n\nclass GarbageCollect {\n private static ENABLE_DEBUG_LOGGING = false;\n\n /**\n * Don't run GC if it's been run within 5 seconds\n */\n private static GC_RE_RUN_GAP = 1000 * 5;\n\n private cachedGcPrefs: GC_PREFERENCES = GC_DEFAULTS;\n\n private cachedGcPrefsStamp = '';\n\n private debugLog = (...args: any) => {\n if (GarbageCollect.ENABLE_DEBUG_LOGGING) {\n console.debug('GC', ...args); // eslint-disable-line no-console\n }\n };\n\n /**\n * Time the GC last ran\n */\n private gcLastRun: number | null = 0;\n\n /**\n * To avoid JSON.parse on the `ui-performance` setting keep a local cache\n */\n private getUiPerfGarbageCollection = (rootState: any) => {\n const uiPerfSetting = rootState.management.types[MANAGEMENT.SETTING]?.list?.find((s: any) => s.id === SETTING.UI_PERFORMANCE);\n\n if (!uiPerfSetting || !uiPerfSetting.value) {\n // Could be in the process of logging out\n return undefined;\n }\n const stamp = `${ uiPerfSetting.metadata.generation }-${ uiPerfSetting.metadata.resourceVersion }`;\n\n if (this.cachedGcPrefsStamp !== stamp) {\n this.debugLog(`Updating ${ SETTING.UI_PERFORMANCE } cache`);\n this.cachedGcPrefsStamp = stamp;\n const uiPerfSettingParsed = JSON.parse(uiPerfSetting.value);\n\n this.cachedGcPrefs = uiPerfSettingParsed.garbageCollection;\n }\n\n return this.cachedGcPrefs;\n };\n\n /**\n * The last time a resource was accessed by either find or getters style functions\n */\n private lastAccessedCache: {\n [store: string]: {\n [type: string]: number;\n }\n } = {}\n\n /**\n * Track when a logged in route changes.\n */\n private lastRouteChange = 0;\n\n // ------------- GC Enabled ---------------------\n\n gcEnabledAll(pseudoCtx: any, type: string) {\n return this.gcEnabledForStore(pseudoCtx.state) && this.gcEnabledSetting(pseudoCtx) && this.gcEnabledForType(pseudoCtx, type);\n }\n\n gcEnabledSetting(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabled;\n }\n\n gcEnabledForStore(state: any) {\n return state?.config?.supportsGc;\n }\n\n /**\n * Store can require certain types are not GC'd (for example `cluster` and `schema`s, `counts`, etc)\n */\n gcEnabledForType(pseudoCtx: any, type: string) {\n const { getters } = pseudoCtx;\n\n if (!type || getters.gcIgnoreTypes[type]) {\n return false;\n }\n\n return true;\n }\n\n gcEnabledInterval(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return {\n enabled: uiPerfGarbageCollection?.enabledInterval,\n interval: uiPerfGarbageCollection?.interval || 0\n };\n }\n\n gcEnabledRoute(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabledOnNavigate;\n }\n\n // ------------- GC (actual) ---------------------\n\n /**\n * Remove stale resource types from the store and stop watching them for changes\n */\n garbageCollect(ctx: any, ignoreTypes: {[type: string]: boolean} = {}) {\n const now = new Date().getTime();\n\n // Is gc currently running OR has run in the past GC_RE_RUN_GAP return early\n if (this.gcLastRun === null || now - this.gcLastRun < GarbageCollect.GC_RE_RUN_GAP) {\n this.debugLog('Skipping (running or recently run)', this.gcLastRun ? new Date(this.gcLastRun) : 'running');\n\n return;\n }\n\n this.gcLastRun = null;\n const gcd: {[type: string]: number} = {};\n\n try {\n const { getters, rootState, dispatch } = ctx;\n\n if (!rootState.clusterReady) {\n this.debugLog('Skipping (cluster not ready)');\n this.gcLastRun = new Date().getTime();\n\n return ;\n }\n this.debugLog(`------ Started ------`);\n\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n if (!uiPerfGarbageCollection) {\n return ;\n }\n const maxAge = uiPerfGarbageCollection.ageThreshold * 1000;\n const maxCount = uiPerfGarbageCollection.countThreshold;\n\n this.debugLog(`Max Age: ${ maxAge }. Max Count: ${ maxCount }`);// , 'Cache', this.lastAccessedCache\n\n const store = ctx.state.config.namespace;\n\n // this.debugLog('Cache', this.lastAccessedCache);\n\n Object.entries((this.lastAccessedCache[store] || {})).forEach(([type, lastAccessed]) => {\n if (!lastAccessed) {\n // There's no last accessed time... gc is probably disabled in another way\n this.debugLog(`${ type }: Skipping (no accessed time)`);\n\n return;\n }\n\n if (!this.gcEnabledForType(ctx, type)) {\n // This specific store is telling us to ignore the type (for example `cluster` store will not GC schema's, counts, etc)\n this.debugLog(`${ type }: Skipping (type ignored by store)`);\n\n return;\n }\n\n if (ignoreTypes[type]) {\n // We're going to a place that needs the resource\n this.debugLog(`${ type }: Skipping (navigating to type)`);\n\n return;\n }\n\n if (now - lastAccessed <= maxAge) {\n // The resource was recently accessed\n\n this.debugLog(`${ type }: Skipping (recently accessed)`);\n\n return;\n }\n\n if (this.lastRouteChange !== undefined && this.lastRouteChange < lastAccessed ) {\n // The resource is being used in the current route/page\n this.debugLog(`${ type }: Skipping (used in current route/page)`);\n\n return;\n }\n\n const countFromResource = getters.all(COUNT)[0].counts[type]?.summary.count;\n const currentCount = countFromResource ?? 0;\n\n if (currentCount === undefined || currentCount < maxCount) {\n // There's too few resources, we might as well keep them to avoid a network request when we need them again\n this.debugLog(`${ type }: Skipping (too few of resource)`);\n\n return;\n }\n\n this.debugLog(`${ type }: Removing from store`);\n dispatch('forgetType', type);\n gcd[type] = currentCount;\n });\n\n this.gcLastRun = new Date().getTime();\n } catch (e) {\n this.debugLog(`: Error`, e);\n this.gcLastRun = new Date().getTime();\n }\n\n if (Object.keys(gcd).length > 0) {\n console.info('Garbage Collected Resources', gcd); // eslint-disable-line no-console\n }\n\n this.debugLog(`------ Finished ------`);\n }\n\n // ------------- GC Update local cache ---------------------\n\n /**\n * Update the time that the resource type was accessed\n * This needs to run after any type initialisation (aka registerType)\n */\n gcUpdateLastAccessed(pseudoCtx: any, type: string) {\n if (!this.gcEnabledAll(pseudoCtx, type)) {\n return;\n }\n const store = pseudoCtx.state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n this.lastAccessedCache[store] = {};\n }\n\n this.lastAccessedCache[store][type] = new Date().getTime();\n }\n\n /**\n * Update the time the user last changed routes\n */\n gcUpdateRouteChanged() {\n this.lastRouteChange = new Date().getTime();\n }\n\n // ------------- GC reset ---------------------\n\n /**\n * Remove all cached access times for the given store\n */\n gcResetStore(state: any) {\n const store = state.config.namespace;\n\n delete this.lastAccessedCache[store];\n\n this.debugLog('Forgetting Store:', store);\n }\n\n /**\n * Remove cached access time for the given resource type\n */\n gcResetType(state: any, type: string) {\n const store = state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n return;\n }\n delete this.lastAccessedCache[store][type];\n\n this.debugLog('Forgetting Type:', store, type);\n }\n}\n\nconst gc = new GarbageCollect();\n\nexport default gc;\n","import {\n PaginationFeature, PaginationFeatureHomePageClusterConfig, PaginationFeatureName, PaginationSettings, PaginationSettingsFeatures, PaginationSettingsStore, PaginationSettingsStores\n} from '@shell/types/resources/settings';\nimport {\n NAMESPACE_FILTER_ALL_USER as ALL_USER,\n NAMESPACE_FILTER_ALL as ALL,\n NAMESPACE_FILTER_ALL_SYSTEM as ALL_SYSTEM,\n NAMESPACE_FILTER_NAMESPACED_YES as NAMESPACED_YES,\n NAMESPACE_FILTER_NAMESPACED_NO as NAMESPACED_NO,\n NAMESPACE_FILTER_KINDS,\n NAMESPACE_FILTER_NS_FULL_PREFIX,\n NAMESPACE_FILTER_P_FULL_PREFIX,\n} from '@shell/utils/namespace-filter';\nimport { PaginationArgs, PaginationResourceContext, PaginationParam, PaginationSort } from '@shell/types/store/pagination.types';\nimport { sameArrayObjects } from '@shell/utils/array';\nimport { isEqual } from '@shell/utils/object';\nimport { STEVE_CACHE } from '@shell/store/features';\nimport { getPerformanceSetting } from '@shell/utils/settings';\nimport { PAGINATION_SETTINGS_STORE_DEFAULTS } from '@shell/plugins/steve/steve-pagination-utils';\nimport { MANAGEMENT } from '@shell/config/types';\nimport { VuexStore } from '@shell/types/store/vuex';\nimport { ServerSidePaginationExtensionConfig } from '@shell/core/types';\nimport { EXT_IDS } from '@shell/core/plugin';\nimport { ExtensionManager } from '@shell/types/extension-manager';\nimport { DEFAULT_PERF_SETTING } from '@shell/config/settings';\n\n// This feature will be removed soon - https://github.com/rancher/dashboard/issues/17323\nconst homePageClusterFeature: PaginationFeature = {\n version: 1,\n enabled: false,\n configuration: {\n threshold: 500, results: 250, pagesPerRow: 25\n }\n};\nconst PAGINATION_SETTINGS_FEATURE_DEFAULTS: PaginationSettingsFeatures = { homePageCluster: homePageClusterFeature };\n\n/**\n * Helper functions for server side pagination\n */\nclass PaginationUtils {\n /**\n * In places where we're using paginated features but not in a page... this is what the max results should be\n */\n readonly defaultPageSize = 100000;\n /**\n * When a ns filter isn't one or more projects/namespaces... what are the valid values?\n *\n * This basically blocks 'Not in a Project'.. which would involve a projectsornamespaces param with every ns not in a project.\n */\n readonly validNsProjectFilters = [ALL, ALL_SYSTEM, ALL_USER, ALL_SYSTEM, NAMESPACE_FILTER_KINDS.NAMESPACE, NAMESPACE_FILTER_KINDS.PROJECT, NAMESPACED_YES, NAMESPACED_NO];\n\n private getSettings({ rootGetters }: any): PaginationSettings {\n const perf = getPerformanceSetting(rootGetters);\n\n return perf.serverPagination;\n }\n\n public getStoreSettings(ctx: any): PaginationSettingsStores\n public getStoreSettings(serverPagination: PaginationSettings): PaginationSettingsStores\n public getStoreSettings(arg: any | PaginationSettings): PaginationSettingsStores {\n const serverPagination: PaginationSettings = arg?.rootGetters !== undefined ? this.getSettings(arg) : arg;\n\n // Ensure we use the current default store settings if\n // 1. from 2.11.0 user saved `ui-performance` setting and it's applied the default pagination settings containing useDefaultStores\n // 2. before 2.11.0 user has saved `ui-performance` setting and it's applied an obsolete pagination settings that lack useDefaultStore\n // 3. user has manually set the `ui-performance` pagination setting useDefaultStores value\n if (serverPagination?.useDefaultStores || serverPagination?.useDefaultStores === undefined) {\n return this.getStoreDefault();\n }\n\n return serverPagination?.stores || this.getStoreDefault();\n }\n\n public getStoreDefault(): PaginationSettingsStores {\n return PAGINATION_SETTINGS_STORE_DEFAULTS;\n }\n\n isSteveCacheEnabled({ rootGetters }: any): boolean {\n // We always get Feature flags as part of start up (see `dispatch('features/loadServer')` in loadManagement)\n return rootGetters['features/get']?.(STEVE_CACHE);\n }\n\n /**\n * Determine if the downstream cluster has vai enabled\n *\n * Almost all the time the downstream cluster vai state will align with upstream (it manages it)\n * ... unless it's harvester then weird things happen\n */\n async isDownstreamSteveCacheEnabled({ dispatch }: any, clusterId: string): Promise {\n const url = `/k8s/clusters/${ clusterId }/v1/${ MANAGEMENT.FEATURE }s/${ STEVE_CACHE }`;\n const entry = await dispatch('cluster/request', { url });\n\n if (entry.status.lockedValue !== null) {\n return entry.status.lockedValue;\n }\n\n return (entry.spec.value !== null) ? entry.spec.value : entry.status.default;\n }\n\n /**\n * Helper - check if a specific resource in a specific store is enabled given the provided settings\n */\n private isEnabledInStore({\n ctx: { rootGetters },\n storeSettings,\n enabledFor\n }: {\n ctx: Partial,\n storeSettings: PaginationSettingsStore,\n enabledFor: PaginationResourceContext\n }): boolean {\n // No pagination setting for target store, not enabled\n if (!storeSettings) {\n return false;\n }\n\n // Not interested in a resource, so just top level settings are checked\n if (!enabledFor.resource) {\n return true;\n }\n\n // Store says all resources are enabled\n if (storeSettings.resources.enableAll) {\n return true;\n }\n\n // given a resource... but no id... invalid\n if (!enabledFor.resource.id) {\n return false;\n }\n\n // Store says only some (those that have pagination columns not from schema and no custom list)\n const isGeneric =\n !rootGetters['type-map/configuredHeaders'](enabledFor.resource.id) &&\n !rootGetters['type-map/configuredPaginationHeaders'](enabledFor.resource.id) &&\n !rootGetters['type-map/hasCustomList'](enabledFor.resource.id);\n\n // Store says generic resource with no custom pagination settings are supported\n if (storeSettings.resources.enableSome?.generic && isGeneric) {\n return true;\n }\n\n // Store says some specific resources are enabled\n if (storeSettings.resources.enableSome?.enabled?.find((setting) => {\n if (typeof setting === 'string') {\n return setting === enabledFor.resource?.id;\n }\n\n if (setting.resource === enabledFor.resource?.id) {\n // Store says only specific usages of this resource are enabled\n if (!!setting.context) {\n return enabledFor.resource?.context ? setting.context.includes(enabledFor.resource.context) : false;\n }\n\n return true;\n }\n\n return false;\n })) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Is pagination enabled at a global level or for a specific resource\n */\n isEnabled({ rootGetters, $extension }: any, enabledFor: PaginationResourceContext) {\n // Cache must be enabled to support pagination api\n if (!this.isSteveCacheEnabled({ rootGetters })) {\n return false;\n }\n\n const settings = this.getSettings({ rootGetters });\n\n // No setting, not enabled\n if (!settings) {\n return false;\n }\n\n // Missing required params, not enabled\n if (!enabledFor) {\n return false;\n }\n\n // Does an extension say this type is enabled?\n const plugin = $extension as ExtensionManager;\n const paginationExtensionPoints = plugin.getAll()[EXT_IDS.SERVER_SIDE_PAGINATION_RESOURCES];\n\n if (paginationExtensionPoints) {\n const allowed = Object.entries(paginationExtensionPoints).find(([_, settingsFn]) => {\n if (!settingsFn) {\n return false;\n }\n\n const settings: ServerSidePaginationExtensionConfig = settingsFn();\n const allowed = Object.entries(settings).find(([store, settings]) => {\n if (store !== enabledFor.store) {\n return false;\n }\n\n return this.isEnabledInStore({\n ctx: { rootGetters },\n storeSettings: settings,\n enabledFor\n });\n });\n\n if (allowed) {\n return true;\n }\n });\n\n if (allowed) {\n return true;\n }\n }\n\n const storeSettings = this.getStoreSettings(settings)?.[enabledFor.store];\n\n return this.isEnabledInStore({\n ctx: { rootGetters },\n storeSettings,\n enabledFor\n });\n }\n\n listAutoRefreshToggleEnabled({ rootGetters }: any): boolean {\n return this.isFeatureEnabled({ rootGetters }, 'listAutoRefreshToggle');\n }\n\n isListManualRefreshEnabled({ rootGetters }: any): boolean {\n return this.isFeatureEnabled({ rootGetters }, 'listManualRefresh');\n }\n\n getFeature({ rootGetters }: any, featureName: PaginationFeatureName): PaginationFeature | undefined {\n // Cache must be enabled to support pagination api\n if (!this.isSteveCacheEnabled({ rootGetters })) {\n return undefined;\n }\n\n const settings = this.getSettings({ rootGetters });\n\n return settings.features?.[featureName] || PAGINATION_SETTINGS_FEATURE_DEFAULTS[featureName];\n }\n\n private isFeatureEnabled({ rootGetters }: any, featureName: PaginationFeatureName): boolean {\n return !!this.getFeature({ rootGetters }, featureName)?.enabled;\n }\n\n resourceChangesDebounceMs({ rootGetters }: any): number | undefined {\n const settings = this.getSettings({ rootGetters });\n\n return settings.resourceChangesDebounceMs || DEFAULT_PERF_SETTING.serverPagination.resourceChangesDebounceMs;\n }\n\n validateNsProjectFilters(nsProjectFilters: string[]) {\n return nsProjectFilters?.every((f) => this.validateNsProjectFilter(f));\n }\n\n validateNsProjectFilter(nsProjectFilter: string) {\n if (nsProjectFilter.startsWith(NAMESPACE_FILTER_NS_FULL_PREFIX) || nsProjectFilter.startsWith(NAMESPACE_FILTER_P_FULL_PREFIX)) {\n return true;\n }\n\n return this.validNsProjectFilters.includes(nsProjectFilter);\n }\n\n paginationFilterEqual(a: PaginationParam, b: PaginationParam): boolean {\n if (a.param !== b.param || a.equals !== b.equals) {\n return false;\n }\n\n return sameArrayObjects(a.fields, b.fields, true);\n }\n\n paginationFiltersEqual(a: PaginationParam[], b: PaginationParam[]): boolean {\n if (!!a && a?.length !== b?.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (!this.paginationFilterEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n paginationEqual(a?: PaginationArgs, b?: PaginationArgs): boolean {\n const {\n filters: aFilter = [], sort: aSort = [], projectsOrNamespaces: aPN = [], ...aPrimitiveTypes\n } = a || {};\n const {\n filters: bFilter = [], sort: bSort = [], projectsOrNamespaces: bPN = [], ...bPrimitiveTypes\n } = b || {};\n\n return isEqual(aPrimitiveTypes, bPrimitiveTypes) &&\n this.paginationFiltersEqual(aFilter, bFilter) &&\n this.paginationFiltersEqual(aPN, bPN) &&\n sameArrayObjects(aSort, bSort, false);\n }\n}\n\nexport default new PaginationUtils();\n","import { PerfSettings } from '@shell/config/settings';\n\ntype PaginationSupersedesSettings = 'incrementalLoading' | 'manualRefresh'\n\nclass _Utils {\n private setting: PaginationSupersedesSettings;\n constructor(setting: PaginationSupersedesSettings) {\n this.setting = setting;\n }\n\n /**\n * This is a centralised point to ensure SSP takes precedence over the performance setting\n */\n isEnabled(paginationEnabled: boolean, perfSettings: PerfSettings): boolean {\n return !paginationEnabled && perfSettings[this.setting].enabled;\n }\n}\n\nexport default {\n /**\n * Helper functions for the 'incremental loading indicator' performance settings\n */\n incrementalLoadingUtils: new _Utils('incrementalLoading'),\n /**\n * Helper functions for the 'manual refresh' performance settings\n */\n manualRefreshUtils: new _Utils('manualRefresh'),\n};\n","/**\n * Utility to replace dynamic require() calls for image/asset imports.\n *\n * Uses webpack's require.context to resolve assets at compile time,\n * then provides lookup functions by path.\n *\n * When migrating to Vite, replace the require.context calls below with:\n *\n * const imgCtx = import.meta.glob(\n * '@shell/assets/**\\/*.{svg,png,jpg,jpeg,gif,ico,webp}',\n * { eager: true, query: '?url', import: 'default' }\n * );\n *\n * const jsonCtx = import.meta.glob(\n * '@shell/assets/**\\/*.json',\n * { eager: true }\n * );\n */\n\n// --- Webpack: require.context type declarations ---\n\ninterface WebpackRequireContext {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key: string): any;\n keys(): string[];\n resolve(key: string): string;\n id: string;\n}\n\n// --- Webpack: require.context (compile-time transform) ---\n\nlet imgCtx: WebpackRequireContext | null = null;\nlet jsonCtx: WebpackRequireContext | null = null;\n\ntry {\n // @ts-expect-error — require.context is a webpack compile-time transform, not visible to TypeScript\n imgCtx = require.context('@shell/assets', true, /\\.(svg|png|jpe?g|gif|ico|webp)$/);\n} catch (e) {}\n\ntry {\n // @ts-expect-error — require.context is a webpack compile-time transform, not visible to TypeScript\n jsonCtx = require.context('@shell/assets', true, /\\.json$/);\n} catch (e) {}\n\n/**\n * Convert an asset path to a require.context key.\n *\n * Input: '~shell/assets/images/providers/aws.svg' or '@shell/assets/images/providers/aws.svg'\n * Output: './images/providers/aws.svg'\n */\nexport function toContextKey(path: string): string {\n return `./${ path.replace(/^[~@]shell\\/assets\\//, '') }`;\n}\n\n/**\n * Look up an image asset URL by path, similar to Webpack's require() for images.\n *\n * Accepts paths with ~shell/ or @shell/ prefix.\n * Throws if the asset is not found (matching the original require() behavior),\n * so callers can use try/catch for fallback logic.\n */\nexport function requireAsset(path: string): string {\n if (!imgCtx) {\n // Throw to match original require() behavior — callers rely on try/catch for fallback logic\n throw new Error(`Asset context not available for: ${ path }`);\n }\n\n const key = toContextKey(path);\n\n return imgCtx(key);\n}\n\n/**\n * Load a JSON file from @shell/assets.\n *\n * Throws if the JSON file is not found (matching the original require() behavior),\n * so callers can use try/catch for fallback logic.\n */\nexport function requireJson(path: string): object {\n if (!jsonCtx) {\n // Throw to match original require() behavior — callers rely on try/catch for fallback logic\n throw new Error(`JSON context not available for: ${ path }`);\n }\n\n const key = toContextKey(path);\n const mod = jsonCtx(key);\n\n return mod.default || mod;\n}\n\n// Exported for testing — allows injecting mock contexts\nexport function _setContexts(img: WebpackRequireContext | null, json: WebpackRequireContext | null): void {\n imgCtx = img;\n jsonCtx = json;\n}\n","import { COUNT } from '@shell/config/types';\nimport { KubeLabelSelector, KubeLabelSelectorExpression } from '@shell/types/kube/kube-api';\nimport { ActionFindPageArgs } from '@shell/types/store/dashboard-store.types';\nimport { FilterArgs, PaginationFilterField, PaginationParamFilter } from '@shell/types/store/pagination.types';\nimport { isEmpty } from '@shell/utils/object';\nimport { convert, matching as rootMatching } from '@shell/utils/selector';\n\ntype MatchingResponse = {\n matched: number,\n matches: any[],\n none: boolean,\n sample: any,\n total: number,\n}\n\n/**\n * Find resources that match a labelSelector. This behaves differently if vai based pagination is on\n * a) Pagination Enabled - fetch matching resources filtered on backend - findPage\n * b) Pagination Disabled - fetch all resources and then filter locally - findAll --> root `matching` fn\n *\n * This is a much smarter version of root matching fn `matching` from shell/utils/selector.js (which just does local filtering)\n *\n * If fetching all of a resource should be avoided or we don't want to mess around with the cache the action `findLabelSelector` should be used\n * - sometimes some legacy code expects all resources are fetched\n * - sometimes we want to fetch a resource but not override the cache\n * - already have a pods list cached, don't want to overwrite that when finding pods associated with a service\n *\n * Resources are returned in a common format which includes metadata\n */\nexport async function matching({\n labelSelector,\n type,\n inStore,\n $store,\n inScopeCount = undefined,\n namespace = undefined,\n transient = true,\n}: {\n /**\n * Standard kube label selector object.\n *\n * If this is 'empty' (no matchLabels or matchExpressions) it will return all results\n *\n * If this is 'null' it will return no results\n */\n labelSelector: KubeLabelSelector,\n /**\n * Resource type\n */\n type: string,\n /**\n * Store in which resources will be cached\n */\n inStore: string,\n /**\n * Standard vuex store object\n */\n $store: any,\n /**\n * Number of resources that are applicable when filtering.\n *\n * Used to skip any potential http request if we know the result will be zero\n *\n * If this property is not supplied we'll try and discover it from the COUNTS resource.\n */\n inScopeCount?: number\n /**\n * Optional namespace or namespaces to apply selector to\n *\n * If this is undefined then namespaces will totally be ignored\n *\n * If this is provided all resources must be within them. If an empty array is provided then no resources will be matched\n *\n */\n namespace?: string | string[],\n /**\n * Should the result bypass the store?\n */\n transient?: boolean,\n}): Promise {\n const isNamespaced = $store.getters[`${ inStore }/schemaFor`](type)?.attributes.namespaced;\n const safeNamespaces = Array.isArray(namespace) ? namespace : !!namespace ? [namespace] : [];\n const filterByNamespaces = isNamespaced && !!namespace ; // Result set must come from a resource in a namespace\n\n // Determine if there's actually anything to filter on\n if (typeof inScopeCount === 'undefined') {\n const counts = $store.getters[`${ inStore }/all`](COUNT)?.[0]?.counts || {};\n\n if (filterByNamespaces) {\n inScopeCount = 0;\n safeNamespaces.forEach((n) => {\n inScopeCount += counts?.[type]?.namespaces[n]?.count || 0;\n });\n } else {\n inScopeCount = counts?.[type]?.summary?.count || 0;\n }\n }\n\n // Exit early if there are any situations that always return nothing\n const noCandidates = (inScopeCount || 0) === 0;\n const filterByNamespaceButNoNamespace = isNamespaced && !!namespace && (!safeNamespaces || safeNamespaces.length === 0);\n const explicityNullLabelSelector = labelSelector === null || (labelSelector?.matchLabels === null && !labelSelector.matchExpressions === null);\n\n // If we have matchLabels or matchExpression entries they must have a key\n const matchLabelKeys = Object.keys(labelSelector.matchLabels || {});\n const invalidMatchLabelKeys = matchLabelKeys.length && matchLabelKeys.filter((k) => !k).length;\n const invalidMatchExpressionKeys = labelSelector?.matchExpressions?.length && labelSelector.matchExpressions.filter((me) => !me.key).length;\n\n if (noCandidates || filterByNamespaceButNoNamespace || explicityNullLabelSelector || invalidMatchLabelKeys || invalidMatchExpressionKeys) {\n return generateMatchingResponse([], inScopeCount || 0);\n }\n\n if ($store.getters[`${ inStore }/paginationEnabled`]?.()) {\n if (isLabelSelectorEmpty(labelSelector) && (!!namespace && !safeNamespaces?.length)) {\n // no namespaces - ALL resources are candidates\n // no labels - return all candidates\n // too many to fetch...\n throw new Error('Either populated labelSelector or namespace/s must be supplied in order to call findPage');\n }\n\n const findPageArgs: ActionFindPageArgs = {\n pagination: new FilterArgs({\n labelSelector,\n filters: PaginationParamFilter.createMultipleFields(\n safeNamespaces.map(\n (n) => new PaginationFilterField({\n field: 'metadata.namespace', // API only compatible with steve atm...\n value: n,\n })\n )\n ),\n }),\n transient,\n };\n\n let match = await $store.dispatch(`${ inStore }/findPage`, { type, opt: findPageArgs });\n\n if (transient) {\n match = match.data;\n }\n\n return generateMatchingResponse(match, inScopeCount || 0);\n } else {\n // Start off with everything as a candidate\n let candidates = await $store.dispatch(`${ inStore }/findAll`, { type });\n\n inScopeCount = candidates.length;\n\n // Filter out namespace specific stuff\n if (isNamespaced && safeNamespaces?.length > 0) {\n candidates = candidates.filter((e: any) => safeNamespaces.includes(e.metadata?.namespace));\n inScopeCount = candidates.length;\n }\n\n // Apply labelSelector\n if (labelSelector.matchLabels || labelSelector.matchExpressions) {\n candidates = matches(candidates, labelSelector, 'metadata.labels');\n }\n\n return generateMatchingResponse(candidates, inScopeCount || 0);\n }\n}\n\nconst generateMatchingResponse = (match: T[], inScopeCount: number): MatchingResponse => {\n const matched = match.length || 0;\n const sample = match[0]?.nameDisplay;\n\n return {\n matched,\n matches: match,\n none: matched === 0,\n sample,\n total: inScopeCount || 0,\n };\n};\n\n/**\n * This is similar to shell/utils/selector.js `matches`, but accepts a kube labelSelector\n */\nfunction matches(candidates: T[], labelSelector: KubeLabelSelector, labelKey: string): T[] {\n const convertedObject = convert(labelSelector.matchLabels, labelSelector.matchExpressions);\n\n return rootMatching(candidates, convertedObject, labelKey);\n}\n\nexport function isLabelSelectorEmpty(labelSelector?: KubeLabelSelector): boolean {\n return !labelSelector?.matchExpressions?.length && isEmpty(labelSelector?.matchLabels);\n}\n\nexport function labelSelectorToSelector(labelSelector?: KubeLabelSelector): string {\n if (isLabelSelectorEmpty(labelSelector)) {\n return '';\n }\n\n const res: string[] = [];\n\n Object.entries(labelSelector?.matchLabels || {}).forEach(([key, value]) => {\n res.push(`${ key }=${ value }`);\n });\n\n (labelSelector?.matchExpressions || []).forEach((value: KubeLabelSelectorExpression) => {\n if (value.operator === 'In' && value.values !== undefined) {\n if (value.values?.length === 1) {\n res.push(`${ value.key }=${ value.values[0] }`);\n } else {\n res.push(`${ value.key } in (${ value.values.join(',') })`);\n }\n } else {\n throw new Error(`Unsupported matchExpression found when converting to selector string. ${ value }`);\n }\n });\n\n return res.join(',');\n}\n","import { MANAGEMENT } from '@shell/config/types';\nimport { Store } from 'vuex';\nimport { DEFAULT_PERF_SETTING, PerfSettings, SETTING } from '@shell/config/settings';\nimport { pluralize } from '@shell/utils/string';\nimport { _MULTI } from '@shell/plugins/dashboard-store/actions';\nimport { ClusterProvisionerContext } from '@shell/core/types';\n\nexport const fetchOrCreateSetting = async(store: Store, id: string, val: string, save = true): Promise => {\n let setting;\n\n try {\n setting = await store.dispatch('management/find', { type: MANAGEMENT.SETTING, id });\n } catch {\n const schema = store.getters['management/schemaFor'](MANAGEMENT.SETTING);\n const url = schema.linkFor('collection');\n\n setting = await store.dispatch('management/create', {\n type: MANAGEMENT.SETTING, metadata: { name: id }, value: val, default: val || ''\n });\n if ( save ) {\n await setting.save({ url });\n }\n }\n\n return setting;\n};\n\n/**\n * Fetch a specific setting that might not exist\n * We fetch all settings - reality is Rancher will have done this already, so there's no overhead in doing\n * this - but if we fetch a specific setting that does not exist, we will get a 404, which we don't want\n */\nexport const fetchSetting = async(store: Store, id: string): Promise => {\n const all = await store.dispatch('management/findAll', { type: MANAGEMENT.SETTING });\n const setting = (all || []).find((setting: any) => setting.id === id);\n\n return setting;\n};\n\n/**\n * Carefully fetch mgmt settings\n *\n * Ensures that\n * - Concurrent calls to this function will only result in a single http request\n * - Subsequent calls, when either logged in or logged out, will only result in a single http request\n * - Logged out call will fetch partial settings, after logging in another call will fetch all settings\n *\n * Will be used in many places, particularly multiple times when loading the dashboard\n *\n * Note - We need to specify the url for cases where it can't be determined (i.e. we haven't fetched schemas)\n */\nexport const fetchInitialSettings = async(store: Store): Promise => {\n const generation = store.getters['management/generation'](MANAGEMENT.SETTING);\n // We use this as it copies the previous mechanism this was based on (in findAll)\n // There is the getter `auth/loggedInAs` (which is set given `fromHeader`), but that's initialised after the first call to here (see `authenticated`)\n const header = store.getters['auth/fromHeader'];\n const authed = `${ header }` === 'true' || `${ header }` === 'none';\n\n if (authed) {\n // We're authed, we will always get the full list\n return await store.dispatch('management/findAll', {\n type: MANAGEMENT.SETTING,\n opt: {\n url: `/v1/${ pluralize(MANAGEMENT.SETTING) }`,\n watch: false, // Watch requires FF and Settings, see `loadManagement` to see how this is handled\n }\n } );\n }\n\n if (!generation) {\n // We're not authed, and haven't previously fetched settings (no generation)\n // Fetch settings, put them in the store, but don't say we've got all yet (so subsequent calls will run)\n return await store.dispatch('management/findAll', {\n type: MANAGEMENT.SETTING,\n opt: {\n url: `/v1/${ pluralize(MANAGEMENT.SETTING) }`,\n load: _MULTI,\n redirectUnauthorized: false\n }\n });\n }\n\n // We're not authed, but have a previous value, no need to make a http request to fetch again\n return store.getters['management/all'](MANAGEMENT.SETTING);\n};\n\nexport const setSetting = async(store: Store, id: string, val: string): Promise => {\n const setting = await fetchOrCreateSetting(store, id, val, false);\n\n setting.value = val;\n await setting.save();\n\n return setting;\n};\n\nexport const getPerformanceSetting = (rootGetters: Record any>): PerfSettings => {\n const perfSettingResource = rootGetters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfSetting = {};\n\n if (perfSettingResource?.value) {\n try {\n perfSetting = JSON.parse(perfSettingResource.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n }\n\n // Start with the default and overwrite the values from the setting - ensures we have defaults for newly added options\n const safeDefaults = Object.assign({}, DEFAULT_PERF_SETTING);\n\n return Object.assign(safeDefaults, perfSetting || {});\n};\n\nexport const isProviderEnabled = (context: ClusterProvisionerContext, provider: string): boolean => {\n const providerTypesJSON = context.getters['management/byId'](MANAGEMENT.SETTING, SETTING.KEV2_OPERATORS )?.value;\n const providerTypes = providerTypesJSON ? JSON.parse(providerTypesJSON) : [];\n\n for ( let i = 0; i < providerTypes.length; i++) {\n if ( providerTypes[i].name === provider) {\n return providerTypes[i].active;\n }\n }\n\n // We want to have providers enabled by default unless they are turned off by a setting\n return true;\n};\n","export type StateColor = 'success' | 'warning' | 'error' | 'info' | 'disabled';\nexport const ALL_STATE_COLORS: StateColor[] = ['success', 'warning', 'error', 'info', 'disabled'];\n\nexport function stateColorCssVar(color: StateColor) {\n return `var(--${ color })`;\n}\n\nexport function toBgColor(color?: StateColor) {\n const withDefaultColor = color || 'info';\n\n return `bg-${ withDefaultColor }`;\n}\n\n/**\n * Checks if 'a' is considered a higher alert than 'b'\n * @param a target\n * @param b comparison\n * @returns true if 'a' is a higher alert than 'b' and false otherwise.\n */\nexport function isHigherAlert(a: StateColor, b: StateColor) {\n const order: StateColor[] = ['info', 'success', 'warning', 'error'];\n\n const aIndex = order.indexOf(a);\n const bIndex = order.indexOf(b);\n\n return aIndex > bIndex;\n}\n\nexport function getHighestAlertColor(colors: StateColor[]) {\n let highestAlert: StateColor = 'info';\n\n for (const color of colors) {\n if (isHigherAlert(color, highestAlert)) {\n highestAlert = color;\n }\n }\n\n return highestAlert;\n}\n\n// 1x1 transparent image as a placeholder image\nexport const BLANK_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n/**\n * Checks if the given element's text is truncated.\n *\n * @param element The DOM element to check for truncation\n * @returns boolean indicating if the element's text is truncated\n */\nexport function isTruncated(element: HTMLElement | null): boolean {\n if (!element) {\n return false;\n }\n\n const isHorizontallyTruncated = element.scrollWidth > element.clientWidth;\n const isVerticallyTruncated = element.scrollHeight - element.clientHeight > 1;\n\n return isHorizontallyTruncated || isVerticallyTruncated;\n}\n","import day from 'dayjs';\nimport { escapeHtml } from '@shell/utils/string';\nimport { DATE_FORMAT, TIME_FORMAT } from '@shell/store/prefs';\nimport { type Store } from 'vuex';\nimport { ZERO_TIME } from '@shell/config/types';\n\nexport function isMissingDate(date: string | undefined | null): boolean {\n return !date || date === ZERO_TIME;\n}\n\nconst FACTORS = [60, 60, 24];\nconst LABELS = ['sec', 'min', 'hour', 'day'];\n\n// Diff two dates and return an object with values for presentation\n// If 't' is also passed, 'string' property is set on the return object with the diff formatted as a string\n// e.g. formats a date difference to return '1 day', '20 hours' etc\nexport function diffFrom(value: any, from: any, t: any) {\n const now = day();\n\n from = from || now;\n const diff = value.diff(from, 'seconds');\n\n let absDiff = Math.abs(diff);\n\n let next = 1;\n let label: any = '?';\n\n let i = 0;\n\n while ( absDiff >= FACTORS[i] && i < FACTORS.length ) {\n absDiff /= FACTORS[i];\n next *= Math.floor(FACTORS[i] / 10);\n i++;\n }\n\n if ( absDiff < 5 ) {\n label = Math.floor(absDiff * 10) / 10;\n } else {\n label = Math.floor(absDiff);\n }\n const ret: any = {\n diff,\n absDiff,\n label,\n // i18n-uses unit.day, unit.hour, unit.min, unit.sec\n unitsKey: `unit.${ LABELS[i] }`,\n units: LABELS[i],\n next,\n };\n\n if (!!t) {\n ret.string = `${ ret.label } ${ t(ret.unitsKey, { count: ret.label }) }`;\n }\n\n return ret;\n}\n\nexport function safeSetTimeout(timeout: any, callback: any, that: any) {\n if (timeout <= 2147483647) {\n // Max value setTimeout can take is max 32 bit int (about 24.9 days)\n return setTimeout(() => {\n callback.apply(that);\n }, timeout);\n }\n}\n\nexport function getSecondsDiff(startDate: any, endDate: any) {\n return Math.round(\n Math.abs(Date.parse(endDate) - Date.parse(startDate)) / 1000\n );\n}\n\n/**\n * return { diff: number; label: string }\n *\n * diff: update frequency in seconds\n * label: content of the cell's column\n */\nexport function elapsedTime(seconds: any) {\n if (!seconds) {\n return {};\n }\n\n if (seconds < 120) {\n return {\n diff: 1,\n label: `${ seconds }s`\n };\n }\n\n const minutes = Math.floor(seconds / 60);\n\n if (minutes < 10) {\n return {\n diff: 1,\n label: `${ minutes }m${ seconds - (minutes * 60) }s`\n };\n }\n\n const hours = Math.floor(seconds / 3600);\n\n if (hours < 3) {\n return {\n diff: 60,\n label: `${ minutes }m`,\n };\n }\n\n const days = Math.floor(seconds / (3600 * 24));\n\n if (days > 1) {\n return {\n diff: 60,\n label: `${ days }d${ hours - (days * 24) }h`,\n };\n }\n\n if (hours > 7) {\n return {\n diff: 60,\n label: `${ hours }h`,\n };\n }\n\n return {\n diff: 60,\n label: `${ hours }h${ minutes - (hours * 60) }m`,\n };\n}\n\n/**\n * Format date and time using user preferences\n * @param value Date string to format\n * @returns Formatted date string\n */\nexport const dateTimeFormat = (value: string | undefined, store: Store): string => {\n if (!value) return '';\n\n const dateFormat = escapeHtml( store.getters['prefs/get'](DATE_FORMAT));\n const timeFormat = escapeHtml( store.getters['prefs/get'](TIME_FORMAT));\n\n const format = `${ dateFormat } ${ timeFormat }`;\n\n return day(value).format(format);\n};\n","type UriField = 'source' | 'protocol' | 'authority' | 'userInfo' | 'user' | 'password' | 'host' | 'port' | 'relative' | 'path' | 'directory' | 'file' | 'queryStr' | 'anchor'\ntype UriFields = {\n [key in UriField]: string; // eslint-disable-line no-unused-vars\n}\nexport type QueryParams = {\n [key: string]: string\n}\n\ninterface ParsedUri extends UriFields {\n query: QueryParams;\n}\n\nexport function addParam(url: string, key: string, val: string | string[]): string {\n let out = url + (url.includes('?') ? '&' : '?');\n\n // val can be a string or an array of strings\n if ( !Array.isArray(val) ) {\n val = [val];\n }\n out += val.map((v) => {\n if ( v === null ) {\n return `${ encodeURIComponent(key) }`;\n } else {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(v) }`;\n }\n }).join('&');\n\n return out;\n}\n\nexport function addParams(url: string, params: QueryParams): string {\n if ( params && typeof params === 'object' ) {\n Object.keys(params).forEach((key) => {\n url = addParam(url, key, params[key]);\n });\n }\n\n return url;\n}\n\nexport function removeParam(url: string, key: string): string {\n const parsed = parse(url);\n\n if ( parsed.query?.[key] ) {\n delete parsed.query[key];\n }\n\n return stringify(parsed);\n}\n\nexport function parseLinkHeader(str: string): Record {\n const out: { [key: string]: string} = { };\n const lines = (str || '').split(',');\n\n for ( const line of lines ) {\n const match = line.match(/^\\s*<([^>]+)>\\s*;\\s*rel\\s*=\"(.*)\"/);\n\n if ( match ) {\n out[match[2].toLowerCase()] = match[1];\n }\n }\n\n return out;\n}\n\nexport function isMaybeSecure(port: number, proto: string): boolean {\n const protocol = proto.toLowerCase();\n\n return portMatch([port], [443, 8443], ['443']) || protocol === 'https';\n}\n\nexport function portMatch(ports: number[], equals: number[], endsWith: string[]): boolean {\n for (let i = 0; i < ports.length; i++) {\n const port = ports[i];\n\n if (equals.includes(port)) {\n return true;\n }\n\n for (let j = 0; j < endsWith.length; j++) {\n const suffix = `${ endsWith[j] }`;\n const portStr = `${ port }`;\n\n if (portStr !== suffix && portStr.endsWith(suffix)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n// parseUri 1.2.2\n// (c) Steven Levithan \n// https://javascriptsource.com/parseuri/\n// MIT License\nexport function parse(str: string): ParsedUri {\n const o = parse.options;\n const m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n\n if (!m) {\n throw new Error(`Cannot parse as uri: ${ str }`);\n }\n const uri = {} as ParsedUri;\n let i = 14;\n\n while (i--) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri.query = {};\n uri.queryStr.replace(o.q.parser, (_, $1: string, $2: string): string => {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n\n return '';\n });\n\n return uri;\n}\n\nparse.options = {\n strictMode: false,\n key: ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'queryStr', 'anchor'],\n q: {\n name: 'query',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g\n },\n parser: {\n strict: /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose: /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/\n }\n} as {\n strictMode: boolean,\n key: UriField[],\n q: {\n name: 'query',\n parser: RegExp\n },\n parser: {\n strict: RegExp,\n loose: RegExp\n }\n};\n\nexport function stringify(uri: ParsedUri): string {\n let out = `${ uri.protocol }://`;\n\n if ( uri.user && uri.password ) {\n out += `${ uri.user }:${ uri.password }@`;\n } else if ( uri.user ) {\n out += `${ uri.user }@`;\n }\n\n out += uri.host;\n\n if ( uri.port ) {\n out += `:${ uri.port }`;\n }\n\n out += uri.path || '/';\n\n out = addParams(out, uri.query || {});\n\n if ( uri.anchor ) {\n out += `#${ uri.anchor }`;\n }\n\n return out;\n}\n","import semver from 'semver';\nimport { parse } from '@shell/utils/url';\nimport { RBAC } from '@shell/config/types';\nimport { HCI } from '@shell/config/labels-annotations';\nimport isEmpty from 'lodash/isEmpty';\nimport has from 'lodash/has';\nimport { Translation } from '@shell/types/t';\nimport {\n isHttps, isLocalhost, hasTrailingForwardSlash, isDomainWithoutProtocol, isValidUrl\n} from '@shell/utils/validators/setting';\nimport { cronScheduleRule } from '@shell/utils/validators/cron-schedule';\n\n// import uniq from 'lodash/uniq';\n\n/**\n * Fixed validation rule which require only the value to be evaluated\n * @param value\n * @returns { string | undefined }\n */\nexport type Validator = (value: any, arg?: any) => T;\n\n/**\n * Factory function which returns a validation rule\n * @param arg Argument used as part of the validation rule process, not necessarily as parameter of the validation rule\n * @param value Value to be evaluated\n * @returns { Validator }\n */\nexport type ValidatorFactory = (arg: any, value?: any) => Validator\n\ntype ServicePort = {\n name?: string,\n nodePort?: string | number,\n port?: string | number,\n targetPort?: string | number,\n idx: number\n}\n\nexport class Port {\n empty: boolean;\n int: number;\n string: string;\n isNumber: boolean;\n isInt: boolean;\n constructor(port: number | string | undefined) {\n this.string = String(port);\n this.int = parseInt(this.string, 10);\n this.empty = (!port && this.int !== 0);\n this.isNumber = !isNaN(this.int) && !this.string.includes('e'); // leaving out the exponent edge case to keep the logic simple and because port numbers aren't that big...\n this.isInt = this.isNumber && !this.string.includes('.');\n }\n}\n\nconst runValidators = (val: any, validators: Validator[]) => {\n for (const validator of validators) {\n const message = validator(val);\n\n if (message) {\n return message;\n }\n }\n};\n\nexport interface ValidationOptions {\n key?: string,\n}\n\n/**\n * @param t the function name we use for getting a translated string\n * @param key the argument passed to the translation to reference the label\n * @returns { Validator | ValidatorFactory } A dictionary of actual validation functions or factories (require parameter)\n * @description\n * This function returns a set of validators that can be used in the form validation process.\n * @example\n * const validators = formRulesGenerator(t, { key: 'MyLabel' });\n * validators.required(); // '\"MyLabel\" is required'\n * validators.minLength(5)('123'); // '\"MyLabel\" must contain more than 5 characters'\n */\nexport default function(\n t: Translation,\n { key = 'Value' }: ValidationOptions\n): { [key: string]: Validator | ValidatorFactory } {\n // utility validators these validators only get used by other validators\n const startDot: ValidatorFactory = (label: string): Validator => (val: string) => val?.slice(0, 1) === '.' ? t(`validation.dns.${ label }.startDot`, { key }) : undefined;\n\n const endDot = (label: string): Validator => (val: string) => val?.slice(-1) === '.' ? t(`validation.dns.${ label }.endDot`, { key }) : undefined;\n\n const startNumber: ValidatorFactory = (label: string): Validator => (val: string) => val?.slice(0, 1)?.match(/[0-9]/) ? t(`validation.dns.${ label }.startNumber`, { key }) : undefined;\n\n const startHyphen: ValidatorFactory = (label: string): Validator => (val: string) => val?.slice(0, 1) === '-' ? t(`validation.dns.${ label }.startHyphen`, { key }) : undefined;\n\n const endHyphen: ValidatorFactory = (label: string): Validator => (val: string) => val?.slice(-1) === '-' ? t(`validation.dns.${ label }.endHyphen`, { key }) : undefined;\n\n const minValue: ValidatorFactory = (min: string) => (val: string | number) => Number(val) < Number(min) ? t('validation.minValue', { key, min }) : undefined;\n\n const maxValue: ValidatorFactory = (max: string) => (val: string | number) => Number(val) > Number(max) ? t('validation.maxValue', { key, max }) : undefined;\n\n const betweenValues: ValidatorFactory = ([min, max]: string[]) => (val: string | number) => minValue(min)(val) || maxValue(max)(val) ? t('validation.betweenValues', {\n key, min, max\n }) : undefined;\n\n const minLength: ValidatorFactory = (min: string) => (val: string) => val.length < Number(min) ? t('validation.minLength', { key, min }) : undefined;\n\n const maxLength: ValidatorFactory = (max: string) => (val: string) => val.length > Number(max) ? t('validation.maxLength', { key, max }) : undefined;\n\n const betweenLengths: ValidatorFactory = ([min, max]: string[]) => (val: string) => minLength(min)(val) || maxLength(max)(val) ? t('validation.betweenLengths', {\n key, min, max\n }) : undefined;\n\n const requiredInt: Validator = (val: string) => isNaN(parseInt(val, 10)) ? t('validation.number.requiredInt', { key }) : undefined;\n\n const isInteger: Validator = (val: string | number) => !Number.isInteger(+val) || `${ val }`.match(/\\.+/g) ? t('validation.number.requiredInt', { key }) : undefined;\n\n const isPositive: Validator = (val: string | number) => +val < 0 ? t('validation.number.isPositive', { key }) : undefined;\n\n const isOctal: Validator = (val: string | number) => {\n const valueString = `${ val }`;\n const isValid = valueString.match(/(^0+)(.+)/);\n\n return isValid ? t('validation.number.isOctal', { key }) : undefined;\n };\n\n const portNumber: Validator = (val: string) => parseInt(val, 10) < 1 || parseInt(val, 10) > 65535 ? t('validation.number.between', {\n key, min: '1', max: '65535'\n }) : undefined;\n\n const dnsChars: Validator = (val: string) => {\n const matchedChars = val?.match(/[^${'A-Za-z0-9-'}]/g);\n\n if (matchedChars) {\n return t('validation.chars', {\n key, count: matchedChars.length, chars: matchedChars.map((char) => char === ' ' ? 'Space' : `\"${ char }\"`).join(', ')\n });\n }\n\n return undefined;\n };\n\n // the weird edge case here deals with internationalized domain names which are prepended with 'xn--'\n // https://datatracker.ietf.org/doc/html/rfc5891#section-4.2.3.1\n const dnsDoubleDash: Validator = (val: string) => (val?.substr(2, 2) === '--' && val?.substr(0, 2) !== 'xn') ? t(`validation.dns.doubleHyphen`, { key }) : undefined;\n\n const dnsIanaServiceNameDoubleDash: Validator = (val: string) => (val?.substr(2, 2) === '--' && val?.substr(0, 2) !== 'xn') ? t(`validation.dns.doubleHyphen`, { key }) : undefined;\n\n const dnsEmpty: ValidatorFactory = (label: string): Validator => (val = '') => val.length === 0 ? t(`validation.dns.${ label }.emptyLabel`, { key, min: 1 }) : undefined;\n\n const dnsTooLong: ValidatorFactory = (label: string, length = 63): Validator => (val = '') => val.length > length ? t(`validation.dns.${ label }.tooLongLabel`, { key, max: length }) : undefined;\n\n // eslint-disable-next-line no-unused-vars\n const hostnameEmpty: Validator = (val = '') => val.length === 0 ? t('validation.dns.hostname.empty', { key }) : undefined;\n\n const hostnameTooLong: Validator = (val = '') => val.length > 253 ? t('validation.dns.hostname.tooLong', { key, max: 253 }) : undefined;\n\n const absolutePath: Validator = (val = '') => val[0] !== '/' && val.length > 0 ? t('validation.path', { key }) : undefined;\n\n const required: Validator = (val: any) => !val && val !== false ? t('validation.required', { key }) : undefined;\n\n const noUpperCase: Validator = (val = '') => val.toLowerCase() !== val ? t('validation.noUpperCase', { key }) : undefined;\n\n const cronSchedule: Validator = (val: string) => {\n try {\n cronScheduleRule.validation(val);\n } catch (e) {\n return t(cronScheduleRule.message);\n }\n };\n\n const https: Validator = (val: string) => val && !isHttps(val) ? t('validation.setting.serverUrl.https') : undefined;\n\n const awsStyleEndpoint: Validator = (val: string) => val && !isDomainWithoutProtocol(val) ? t('validation.setting.serverUrl.awsStyleEndpoint') : undefined;\n\n const localhost: Validator = (val: string) => isLocalhost(val) ? t('validation.setting.serverUrl.localhost') : undefined;\n\n const trailingForwardSlash: Validator = (val: string) => hasTrailingForwardSlash(val) ? t('validation.setting.serverUrl.trailingForwardSlash') : undefined;\n\n const url: Validator = (val: string) => val && !isValidUrl(val) ? t('validation.setting.serverUrl.url') : undefined;\n\n const genericUrl: Validator = (val: string) => val && !isValidUrl(val) ? t('validation.genericUrl') : undefined;\n\n const urlRepository: Validator = (url: string) => {\n const message = t('validation.repository.url');\n\n if (!url) {\n return message;\n }\n\n if (url.includes(' ')) {\n return message;\n }\n\n const {\n protocol,\n authority,\n host,\n port,\n path\n } = parse(url);\n\n // Test duplicate protocol\n if (!host || protocol === host) {\n return message;\n }\n\n // Test http(s)/ssh protocol\n if (protocol && (!/^(http|https|ssh)$/gm.test(protocol) || (!url.startsWith('https://') && !url.startsWith('http://') && !url.startsWith('ssh://')))) {\n return message;\n }\n\n // Test ssh, authority must be valid (SSH user + host)\n if (!protocol && !port && (!authority.endsWith(':') || path.startsWith('/'))) {\n return message;\n }\n\n // Encoded space characters (%20) are allowed only in the path\n const hostAndPath = `${ host }${ path.replaceAll('%20', '') }`;\n\n // Test host/path\n if (!/^([\\w\\.@\\:\\/\\-]+)([\\d\\/\\w.-]+?)(.git){0,1}(\\/)?$/gm.test(hostAndPath)) {\n return message;\n }\n\n return undefined;\n };\n\n const ociRegistry: Validator = (url: string) => {\n const message = t('validation.oci.url');\n\n if (!url) {\n return message;\n }\n\n if (url.includes(' ')) {\n return message;\n }\n\n const {\n protocol,\n host,\n path\n } = parse(url);\n\n // Test duplicate protocol\n if (!host || protocol === host) {\n return message;\n }\n\n // Test oci protocol\n if (!url.startsWith('oci://')) {\n return message;\n }\n\n // Test host/path\n if (!/^([\\w\\.@\\:\\/\\-]+)([\\d\\/\\w.-]+?)(\\/)?$/gm.test(`${ host }${ path }`)) {\n return message;\n }\n\n return undefined;\n };\n\n const version: Validator = (value: string) => {\n return value && !semver.valid(value) ? t('validation.version') : undefined;\n };\n\n const semanticVersion: Validator = (value: string) => {\n return value && !semver.validRange(value) ? t('validation.semanticVersion') : undefined;\n };\n\n const alphanumeric: Validator = (val: string) => val && !/^[a-zA-Z0-9]+$/.test(val) ? t('validation.alphanumeric', { key }) : undefined;\n\n const interval: Validator = (val: string) => !/^\\d+[hms]$/.test(val) ? t('validation.monitoring.route.interval', { key }) : undefined;\n\n const containerImage: Validator = (val: any) => !val?.image ? t('workload.validation.containerImage', { name: val.name }) : undefined;\n\n const localhostProfile: Validator = (val: any) => (val?.securityContext?.seccompProfile?.type === 'Localhost' && !val?.securityContext.seccompProfile?.localhostProfile && !val?.securityContext?.privileged) ? t('workload.validation.localhostProfile', { name: val.name }) : undefined;\n\n const containerImages: Validator = (val: any | [any]) => {\n const containers = val.jobTemplate ? val?.jobTemplate?.spec?.template?.spec?.containers : val?.template?.spec?.containers;\n\n if (!containers || !containers.length) {\n return t('validation.required', { key: t('workload.container.titles.containers') });\n }\n\n // making sure each container has an image name\n return containers.map((container: any) => containerImage(container)).find((containerError: string) => containerError);\n };\n\n const registryUrl = (privateRegistryURL: string) => {\n if (!privateRegistryURL) {\n return;\n }\n\n const pattern = new RegExp('^([a-z\\\\-0-9]+:\\\\/\\\\/?)?' + // scheme (optional, https://, http://, file:/, admin:/)\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // ip address\n '(\\\\:\\\\d+)?'); // port\n\n const isValid = pattern.test(privateRegistryURL);\n\n return isValid ? undefined : t('cluster.privateRegistry.privateRegistryUrlError');\n };\n\n const dnsLabel: Validator = (val: string) => {\n const validators = [\n dnsChars,\n startHyphen('label'),\n endHyphen('label'),\n dnsDoubleDash,\n // dnsEmpty('label'), // questionable as to if this is needed if the field is also required...\n dnsTooLong('label')\n ];\n\n return runValidators(val, validators);\n };\n\n const dnsLabelIanaServiceName: Validator = (val: string) => {\n const validators = [\n dnsChars,\n startHyphen('label'),\n endHyphen('label'),\n dnsIanaServiceNameDoubleDash,\n dnsEmpty('label'), // questionable as to if this is needed if the field is also required...\n dnsTooLong('label', 15)\n ];\n\n return runValidators(val, validators);\n };\n\n const dnsLabelRestricted: Validator = (val: string) => {\n const validators = [\n dnsChars,\n startNumber('label'),\n startHyphen('label'),\n endHyphen('label'),\n dnsDoubleDash,\n dnsEmpty('label'), // questionable as to if this is needed if the field is also required...\n dnsTooLong('label')\n ];\n\n return runValidators(val, validators);\n };\n\n const hostname: Validator = (val: string) => {\n if (val) {\n const validators = [\n startDot('hostname'),\n hostnameTooLong,\n endDot('hostname')\n ];\n\n const hostNameMessage = runValidators(val, validators);\n\n if (hostNameMessage) {\n return hostNameMessage;\n }\n\n const labels = val.split('.');\n const labelValidators = [\n dnsChars,\n startHyphen('hostname'),\n endHyphen('hostname'),\n dnsDoubleDash,\n dnsEmpty('hostname'),\n dnsTooLong('hostname')\n ];\n\n for ( let i = 0; i < labels.length; i++ ) {\n const labelMessage = runValidators(labels[i], labelValidators);\n\n if (labelMessage) {\n return labelMessage;\n }\n }\n }\n };\n\n const wildcardHostname: Validator = (val: string) => {\n // allow wildcard in first part of hostname\n val = val ? val.replace(/^\\*\\./, '') : val;\n\n return hostname(val);\n };\n\n const externalName: Validator = (val: string) => {\n if (isEmpty(val)) {\n return t('validation.service.externalName.none');\n } else {\n return hostname(val);\n }\n };\n\n const testRule = (val: string | undefined) => {\n return 'This is an error returned by the testRule validator';\n };\n\n const ruleGroups: Validator = (val: {groups?: any}) => isEmpty(val?.groups) ? t('validation.prometheusRule.groups.required') : undefined;\n\n const clusterName: ValidatorFactory = (isRke2: boolean): Validator => (val: string | undefined) => isRke2 && (val || '')?.match(/^(c-.{5}|local)$/i) ? t('validation.cluster.name') : undefined;\n\n const servicePort: Validator = (val: ServicePort) => {\n const {\n name,\n idx\n } = val;\n\n const nodePort = new Port(val.nodePort);\n const listeningPort = new Port(val.port);\n const targetPort = new Port(val.targetPort);\n\n if (isEmpty(name)) {\n return t('validation.service.ports.name.required', { position: idx + 1 });\n }\n\n if (!nodePort.empty) {\n if (!nodePort.isInt) {\n return t('validation.service.ports.nodePort.requiredInt', { position: idx + 1 });\n } else if (nodePort.int < 1 || nodePort.int > 65535) {\n return t('validation.service.ports.nodePort.between', { position: idx + 1 });\n }\n }\n\n if (!listeningPort.empty) {\n if (!listeningPort.isInt) {\n return t('validation.service.ports.port.requiredInt', { position: idx + 1 });\n } else if (listeningPort.int < 1 || listeningPort.int > 65535) {\n return t('validation.service.ports.port.between', { position: idx + 1 });\n } else if (listeningPort.string?.includes('.')) {\n return listeningPort;\n }\n } else {\n return t('validation.service.ports.port.required', { position: idx + 1 });\n }\n\n if (!targetPort.empty) {\n if (!targetPort.isInt) {\n const ianaServiceNameErrors = dnsLabelIanaServiceName(targetPort.string);\n\n if (ianaServiceNameErrors) {\n return ianaServiceNameErrors;\n }\n } else if (targetPort.int < 1 || targetPort.int > 65535) {\n return t('validation.service.ports.targetPort.between', { position: idx + 1 });\n }\n } else {\n return t('validation.service.ports.targetPort.required', { position: idx + 1 });\n }\n\n return undefined;\n };\n\n const groupIsValid: Validator = (val, readableIndex) => {\n let returnMessage: string | undefined;\n\n if (isEmpty(val?.name)) {\n return t('validation.prometheusRule.groups.valid.name', { index: readableIndex });\n }\n\n if (isEmpty(val.rules)) {\n return t('validation.prometheusRule.groups.valid.singleEntry', { index: readableIndex });\n } else {\n val.rules.forEach((rule: any, idx: number) => {\n const readableRuleIndex = idx + 1;\n\n if (has(rule, 'alert') && isEmpty(rule?.alert) && !returnMessage) {\n returnMessage = t('validation.prometheusRule.groups.valid.rule.alertName', { groupIndex: readableIndex, ruleIndex: readableRuleIndex });\n } else if (has(rule, 'record') && isEmpty(rule?.record)) {\n returnMessage = t('validation.prometheusRule.groups.valid.rule.recordName', { groupIndex: readableIndex, ruleIndex: readableRuleIndex });\n }\n\n if ((has(rule, 'expr') && isEmpty(rule.expr) && !returnMessage) || (!has(rule, 'expr') && !returnMessage)) {\n returnMessage = t('validation.prometheusRule.groups.valid.rule.expr', { groupIndex: readableIndex, ruleIndex: readableRuleIndex });\n }\n\n if (has(rule, 'alert')) {\n if (\n (has(rule, 'labels') && isEmpty(rule.labels) && !returnMessage) ||\n (!has(rule, 'labels') && !returnMessage)\n ) {\n returnMessage = t('validation.prometheusRule.groups.valid.rule.labels', { groupIndex: readableIndex, ruleIndex: readableRuleIndex });\n }\n }\n });\n }\n\n return returnMessage;\n };\n\n const groupsAreValid: Validator = (val) => {\n const groups = [...val]; // making a new array in the function because I'm gonna mutate it later...\n let message;\n\n groups.forEach((group, idx, arr) => {\n message = groupIsValid(group, idx + 1);\n if (!!message) {\n arr.length = idx + 1; // this is a tricksy way of breaking a forEach loop since we just want the first message\n }\n });\n\n return message;\n };\n\n const matching: Validator = (val) => {\n if (isEmpty(val?.match) && isEmpty(val?.['match_re'])) {\n return t('validation.monitoring.route.match');\n }\n };\n\n const roleTemplateRules: ValidatorFactory = (type): Validator => (val = []) => {\n if (val.some((rule: any) => isEmpty(rule.verbs))) {\n return t('validation.roleTemplate.roleTemplateRules.missingVerb');\n }\n\n if (val.some((rule: any) => rule.resources?.length && rule.nonResourceURLs?.length)) {\n return t('validation.roleTemplate.roleTemplateRules.noResourceAndNonResource');\n }\n\n if (type === RBAC.ROLE) {\n if (val.some((rule: any) => isEmpty(rule.resources))) {\n return t('validation.roleTemplate.roleTemplateRules.missingResource');\n }\n\n if (val.some((rule: any) => isEmpty(rule.apiGroups))) {\n return t('validation.roleTemplate.roleTemplateRules.missingApiGroup');\n }\n } else if (val.some((rule: any) => isEmpty(rule.resources) && isEmpty(rule.nonResourceURLs))) {\n return t('validation.roleTemplate.roleTemplateRules.missingOneResource');\n }\n\n return undefined;\n };\n\n // The existing validator for clusterIp never actually returns an error\n const clusterIp: Validator = (val) => undefined;\n\n const backupTarget: Validator = (val) => {\n const parseValue = JSON.parse(val);\n const type = parseValue.type;\n\n if (!type) {\n return t('validation.required', { key: 'Type' });\n }\n\n if (type === 's3') {\n if (!parseValue.accessKeyId) {\n return t('validation.required', { key: 'accessKeyId' });\n }\n\n if (!parseValue.secretAccessKey) {\n return t('validation.required', { key: 'secretAccessKey' });\n }\n\n if (!parseValue.bucketRegion) {\n return t('validation.required', { key: 'bucketRegion' });\n }\n\n if (!parseValue.bucketName) {\n return t('validation.required', { key: 'bucketName' });\n }\n }\n\n return undefined;\n };\n\n const imageUrl: Validator = (val) => {\n const VM_IMAGE_FILE_FORMAT = ['qcow', 'qcow2', 'raw', 'img', 'iso'];\n\n if (!val || val === '') {\n return undefined;\n }\n\n const urlSlug = val.split('/').pop();\n const fileExtension = urlSlug.split('.').pop().toLowerCase();\n\n if (!VM_IMAGE_FILE_FORMAT.includes(fileExtension)) {\n return t('harvester.validation.image.ruleTip');\n }\n\n return undefined;\n };\n\n const fileRequired: Validator = (val = {}) => {\n if (!val[HCI.IMAGE_NAME]) {\n return t('validation.required', { key: t('harvester.image.fileName') });\n }\n };\n\n const subDomain: Validator = (val) => {\n const matchedChars = val?.match(/[^a-z0-9.-]/g);\n\n if (matchedChars) {\n return t('validation.chars', {\n key, count: matchedChars.length, chars: matchedChars.map((char: string) => char === ' ' ? 'Space' : `\"${ char }\"`).join(', ')\n });\n }\n\n return runValidators(val, [startHyphen('label'), endHyphen('label'), startDot('label'), endDot('label'), required]);\n };\n\n return {\n absolutePath,\n alphanumeric,\n backupTarget,\n betweenLengths,\n betweenValues,\n clusterIp,\n clusterName,\n containerImage,\n containerImages,\n localhostProfile,\n cronSchedule,\n dnsLabel,\n dnsLabelIanaServiceName,\n dnsLabelRestricted,\n externalName,\n fileRequired,\n urlRepository,\n groupsAreValid,\n hostname,\n imageUrl,\n interval,\n https,\n awsStyleEndpoint,\n localhost,\n trailingForwardSlash,\n url,\n genericUrl,\n matching,\n maxLength,\n maxValue,\n minLength,\n minValue,\n noUpperCase,\n ociRegistry,\n portNumber,\n registryUrl,\n required,\n requiredInt,\n isInteger,\n isPositive,\n isOctal,\n roleTemplateRules,\n ruleGroups,\n semanticVersion,\n servicePort,\n subDomain,\n testRule,\n version,\n wildcardHostname\n };\n}\n","export const PRODUCT_NAME = 'harvester';\nexport const BLANK_CLUSTER = '_';\nexport const LOGO = require(`@shell/assets/images/providers/harvester.svg`);\n","export const HCI_SETTING = {\n BACKUP_TARGET: 'backup-target',\n CONTAINERD_REGISTRY: 'containerd-registry',\n LOG_LEVEL: 'log-level',\n SERVER_VERSION: 'server-version',\n UI_INDEX: 'ui-index',\n UPGRADE_CHECKER_ENABLED: 'upgrade-checker-enabled',\n UPGRADE_CHECKER_URL: 'upgrade-checker-url',\n VLAN: 'vlan',\n UI_SOURCE: 'ui-source',\n UI_PL: 'ui-pl',\n HTTP_PROXY: 'http-proxy',\n ADDITIONAL_CA: 'additional-ca',\n OVERCOMMIT_CONFIG: 'overcommit-config',\n CLUSTER_REGISTRATION_URL: 'cluster-registration-url',\n DEFAULT_STORAGE_CLASS: 'default-storage-class',\n SUPPORT_BUNDLE_TIMEOUT: 'support-bundle-timeout',\n SUPPORT_BUNDLE_EXPIRATION: 'support-bundle-expiration',\n SUPPORT_BUNDLE_FILE_NAME: 'support-bundle-file-name',\n SUPPORT_BUNDLE_IMAGE: 'support-bundle-image',\n SUPPORT_BUNDLE_NODE_COLLECTION_TIMEOUT: 'support-bundle-node-collection-timeout',\n STORAGE_NETWORK: 'storage-network',\n RWX_NETWORK: 'rwx-network',\n VM_FORCE_RESET_POLICY: 'vm-force-reset-policy',\n SSL_CERTIFICATES: 'ssl-certificates',\n SSL_PARAMETERS: 'ssl-parameters',\n SUPPORT_BUNDLE_NAMESPACES: 'support-bundle-namespaces',\n AUTO_DISK_PROVISION_PATHS: 'auto-disk-provision-paths',\n RELEASE_DOWNLOAD_URL: 'release-download-url',\n CCM_CSI_VERSION: 'harvester-csi-ccm-versions',\n CSI_DRIVER_CONFIG: 'csi-driver-config',\n CSI_ONLINE_EXPAND_VALIDATION: 'csi-online-expand-validation',\n VM_TERMINATION_PERIOD: 'default-vm-termination-grace-period-seconds',\n NTP_SERVERS: 'ntp-servers',\n AUTO_ROTATE_RKE2_CERTS: 'auto-rotate-rke2-certs',\n KUBECONFIG_DEFAULT_TOKEN_TTL_MINUTES: 'kubeconfig-default-token-ttl-minutes',\n LONGHORN_V2_DATA_ENGINE_ENABLED: 'longhorn-v2-data-engine-enabled',\n LONGHORN_V2_DATA_ENGINE_HUGEPAGE_ENABLED: 'longhorn-v2-data-engine-hugepage-enabled',\n LONGHORN_V2_DATA_ENGINE_MEMORY_SIZE: 'longhorn-v2-data-engine-memory-size',\n ADDITIONAL_GUEST_MEMORY_OVERHEAD_RATIO: 'additional-guest-memory-overhead-ratio',\n UPGRADE_CONFIG: 'upgrade-config',\n VM_MIGRATION_NETWORK: 'vm-migration-network',\n RANCHER_CLUSTER: 'rancher-cluster',\n MAX_HOTPLUG_RATIO: 'max-hotplug-ratio',\n KUBEVIRT_MIGRATION: 'kubevirt-migration',\n INSTANCE_MANAGER_RESOURCES: 'instance-manager-resources',\n CLUSTER_POD_SECURITY_STANDARD: 'cluster-pod-security-standard'\n};\n\nexport const HCI_ALLOWED_SETTINGS = {\n [HCI_SETTING.BACKUP_TARGET]: {\n kind: 'json', from: 'import', canReset: true\n },\n [HCI_SETTING.LOG_LEVEL]: {\n kind: 'enum',\n options: ['info', 'debug', 'trace']\n },\n [HCI_SETTING.VLAN]: {\n kind: 'custom', from: 'import', alias: 'vlan'\n },\n [HCI_SETTING.AUTO_ROTATE_RKE2_CERTS]: {\n kind: 'json',\n from: 'import',\n featureFlag: 'autoRotateRke2CertsSetting'\n },\n [HCI_SETTING.CSI_DRIVER_CONFIG]: { kind: 'json', from: 'import' },\n [HCI_SETTING.CSI_ONLINE_EXPAND_VALIDATION]: {\n kind: 'json', from: 'import', featureFlag: 'csiOnlineExpandValidation'\n },\n [HCI_SETTING.SERVER_VERSION]: { readOnly: true },\n [HCI_SETTING.UPGRADE_CHECKER_ENABLED]: { kind: 'boolean' },\n [HCI_SETTING.UPGRADE_CHECKER_URL]: { kind: 'url' },\n [HCI_SETTING.HTTP_PROXY]: { kind: 'json', from: 'import' },\n [HCI_SETTING.ADDITIONAL_CA]: {\n kind: 'multiline', canReset: true, from: 'import'\n },\n [HCI_SETTING.OVERCOMMIT_CONFIG]: { kind: 'json', from: 'import' },\n [HCI_SETTING.SUPPORT_BUNDLE_TIMEOUT]: { kind: 'number' },\n [HCI_SETTING.SUPPORT_BUNDLE_EXPIRATION]: { kind: 'number' },\n [HCI_SETTING.SUPPORT_BUNDLE_FILE_NAME]: {\n kind: 'string', canReset: true, featureFlag: 'supportBundleFileNameSetting'\n },\n [HCI_SETTING.SUPPORT_BUNDLE_NODE_COLLECTION_TIMEOUT]: { kind: 'number', featureFlag: 'supportBundleNodeCollectionTimeoutSetting' },\n [HCI_SETTING.SUPPORT_BUNDLE_IMAGE]: { kind: 'json', from: 'import' },\n [HCI_SETTING.STORAGE_NETWORK]: {\n kind: 'custom', from: 'import', canReset: true\n },\n [HCI_SETTING.RWX_NETWORK]: {\n kind: 'json', from: 'import', canReset: true, featureFlag: 'rwxNetworkSetting'\n },\n [HCI_SETTING.VM_FORCE_RESET_POLICY]: { kind: 'json', from: 'import' },\n [HCI_SETTING.SSL_CERTIFICATES]: { kind: 'json', from: 'import' },\n [HCI_SETTING.SSL_PARAMETERS]: {\n kind: 'json', from: 'import', canReset: true\n },\n [HCI_SETTING.SUPPORT_BUNDLE_NAMESPACES]: { from: 'import', canReset: true },\n [HCI_SETTING.AUTO_DISK_PROVISION_PATHS]: { canReset: true },\n [HCI_SETTING.RELEASE_DOWNLOAD_URL]: { kind: 'url' },\n [HCI_SETTING.CONTAINERD_REGISTRY]: {\n kind: 'json', from: 'import', canReset: true\n },\n [HCI_SETTING.UI_SOURCE]: {\n kind: 'enum',\n options: ['auto', 'external', 'bundled']\n },\n [HCI_SETTING.UI_INDEX]: { kind: 'url' },\n [HCI_SETTING.VM_TERMINATION_PERIOD]: { kind: 'string', from: 'import' },\n [HCI_SETTING.NTP_SERVERS]: {\n kind: 'json', from: 'import', canReset: true\n },\n [HCI_SETTING.KUBECONFIG_DEFAULT_TOKEN_TTL_MINUTES]: { kind: 'number', featureFlag: 'kubeconfigDefaultTokenTTLMinutesSetting' },\n [HCI_SETTING.LONGHORN_V2_DATA_ENGINE_ENABLED]: {\n kind: 'boolean',\n experimental: true,\n featureFlag: 'longhornV2LVMSupport'\n },\n [HCI_SETTING.LONGHORN_V2_DATA_ENGINE_HUGEPAGE_ENABLED]: {\n kind: 'boolean',\n featureFlag: 'longhornV2HugepageSettings'\n },\n [HCI_SETTING.LONGHORN_V2_DATA_ENGINE_MEMORY_SIZE]: {\n kind: 'number',\n featureFlag: 'longhornV2HugepageSettings'\n },\n [HCI_SETTING.ADDITIONAL_GUEST_MEMORY_OVERHEAD_RATIO]: { kind: 'string', from: 'import' },\n [HCI_SETTING.UPGRADE_CONFIG]: {\n kind: 'json',\n from: 'import',\n featureFlag: 'upgradeConfigSetting',\n docPath: 'UPGRADE_CONFIG_URL'\n },\n [HCI_SETTING.RANCHER_CLUSTER]: {\n kind: 'custom', from: 'import', canReset: true, featureFlag: 'rancherClusterSetting'\n },\n [HCI_SETTING.MAX_HOTPLUG_RATIO]: { kind: 'number', featureFlag: 'cpuMemoryHotplug' },\n [HCI_SETTING.VM_MIGRATION_NETWORK]: {\n kind: 'json', from: 'import', canReset: true, featureFlag: 'vmNetworkMigration',\n },\n [HCI_SETTING.KUBEVIRT_MIGRATION]: {\n kind: 'json', from: 'import', canReset: true, featureFlag: 'kubevirtMigration',\n },\n [HCI_SETTING.INSTANCE_MANAGER_RESOURCES]: {\n kind: 'json', from: 'import', featureFlag: 'instanceManagerResourcesSetting'\n },\n [HCI_SETTING.CLUSTER_POD_SECURITY_STANDARD]: {\n kind: 'json', from: 'import', canReset: true, featureFlag: 'clusterPodSecurityStandardSetting'\n }\n};\n\nexport const HCI_SINGLE_CLUSTER_ALLOWED_SETTING = {\n [HCI_SETTING.CLUSTER_REGISTRATION_URL]: {\n kind: 'custom',\n from: 'import',\n canReset: true,\n },\n [HCI_SETTING.UI_PL]: {\n kind: 'custom', from: 'import', alias: 'branding'\n }\n};\n","// To find the CRD name, you can run `kubectl api-resources` and look for the `NAME` column.\n// The CRD name is usually in the format of `.`, where `` is the plural form of the resource and `` is the API group it belongs to.\n// e.g\n// 1. `virtualmachines.kubevirt.io` -> kubevirt.io.virtualmachine, the CRD name for the `VirtualMachine` resource in the `kubevirt.io` API group\n// 2. `vpc-nat-gateways.kubeovn.io` -> kubeovn.io.vpcnatgateway, the CRD name for the `VpcNatGateway` resource in the `kubeovn.io` API group.\n\nexport const HCI = {\n VM: 'kubevirt.io.virtualmachine',\n VMI: 'kubevirt.io.virtualmachineinstance',\n VMIM: 'kubevirt.io.virtualmachineinstancemigration',\n VM_TEMPLATE: 'harvesterhci.io.virtualmachinetemplate',\n VM_VERSION: 'harvesterhci.io.virtualmachinetemplateversion',\n IMAGE: 'harvesterhci.io.virtualmachineimage',\n SSH: 'harvesterhci.io.keypair',\n VOLUME: 'harvesterhci.io.volume',\n USER: 'harvesterhci.io.user',\n SETTING: 'harvesterhci.io.setting',\n UPGRADE: 'harvesterhci.io.upgrade',\n UPGRADE_LOG: 'harvesterhci.io.upgradelog',\n SCHEDULE_VM_BACKUP: 'harvesterhci.io.schedulevmbackup',\n BACKUP: 'harvesterhci.io.virtualmachinebackup',\n RESTORE: 'harvesterhci.io.virtualmachinerestore',\n NODE_NETWORK: 'network.harvesterhci.io.nodenetwork',\n CLUSTER_NETWORK: 'network.harvesterhci.io.clusternetwork',\n HOST_NETWORK_CONFIG: 'network.harvesterhci.io.hostnetworkconfig',\n SUBNET: 'kubeovn.io.subnet',\n VPC: 'kubeovn.io.vpc',\n IP: 'kubeovn.io.ip',\n VLAN: 'kubeovn.io.vlan',\n IPTABLES_EIP: 'kubeovn.io.iptableseip',\n IPTABLES_SNAT_RULE: 'kubeovn.io.iptablessnatrule',\n IPTABLES_DNAT_RULE: 'kubeovn.io.iptablesdnatrule',\n PROVIDER_NETWORK: 'kubeovn.io.providernetwork',\n VPC_NAT_GATEWAY: 'kubeovn.io.vpcnatgateway',\n VM_IMAGE_DOWNLOADER: 'harvesterhci.io.virtualmachineimagedownloader',\n SUPPORT_BUNDLE: 'harvesterhci.io.supportbundle',\n NETWORK_ATTACHMENT: 'harvesterhci.io.networkattachmentdefinition',\n CLUSTER: 'harvesterhci.io.management.cluster',\n DASHBOARD: 'harvesterhci.io.dashboard',\n BLOCK_DEVICE: 'harvesterhci.io.blockdevice',\n CLOUD_TEMPLATE: 'harvesterhci.io.cloudtemplate',\n HOST: 'harvesterhci.io.host',\n VERSION: 'harvesterhci.io.version',\n SNAPSHOT: 'harvesterhci.io.volumesnapshot',\n VM_SNAPSHOT: 'harvesterhci.io.vmsnapshot',\n ALERTMANAGERCONFIG: 'harvesterhci.io.monitoring.alertmanagerconfig',\n CLUSTER_FLOW: 'harvesterhci.io.logging.clusterflow',\n CLUSTER_OUTPUT: 'harvesterhci.io.logging.clusteroutput',\n FLOW: 'harvesterhci.io.logging.flow',\n OUTPUT: 'harvesterhci.io.logging.output',\n STORAGE: 'harvesterhci.io.storage',\n RESOURCE_QUOTA: 'harvesterhci.io.resourcequota',\n KSTUNED: 'node.harvesterhci.io.ksmtuned',\n HUGEPAGES: 'node.harvesterhci.io.hugepage',\n PCI_DEVICE: 'devices.harvesterhci.io.pcidevice',\n PCI_CLAIM: 'devices.harvesterhci.io.pcideviceclaim',\n SR_IOV: 'devices.harvesterhci.io.sriovnetworkdevice',\n VGPU_DEVICE: 'devices.harvesterhci.io.vgpudevice',\n SR_IOVGPU_DEVICE: 'devices.harvesterhci.io.sriovgpudevice',\n USB_DEVICE: 'devices.harvesterhci.io.usbdevice',\n USB_CLAIM: 'devices.harvesterhci.io.usbdeviceclaim',\n MIG_CONFIGURATION: 'devices.harvesterhci.io.migconfiguration',\n VLAN_CONFIG: 'network.harvesterhci.io.vlanconfig',\n VLAN_STATUS: 'network.harvesterhci.io.vlanstatus',\n ADD_ONS: 'harvesterhci.io.addon',\n LINK_MONITOR: 'network.harvesterhci.io.linkmonitor',\n SECRET: 'harvesterhci.io.secret',\n INVENTORY: 'metal.harvesterhci.io.inventory',\n LB: 'loadbalancer.harvesterhci.io.loadbalancer',\n IP_POOL: 'loadbalancer.harvesterhci.io.ippool',\n HARVESTER_CONFIG: 'rke-machine-config.cattle.io.harvesterconfig',\n LVM_VOLUME_GROUP: 'harvesterhci.io.lvmvolumegroup',\n VMIMPORT_SOURCE_V: 'migration.harvesterhci.io.vmwaresource',\n VMIMPORT_SOURCE_O: 'migration.harvesterhci.io.openstacksource',\n VMIMPORT_SOURCE_OVA: 'migration.harvesterhci.io.ovasource',\n VMIMPORT: 'migration.harvesterhci.io.virtualmachineimport',\n MIGRATION: 'migration.harvesterhci.io',\n // Forklift CRDs\n FORKLIFT_PROVIDER: 'forklift.konveyor.io.provider',\n FORKLIFT_NETWORK_MAP: 'forklift.konveyor.io.networkmap',\n FORKLIFT_STORAGE_MAP: 'forklift.konveyor.io.storagemap',\n FORKLIFT_PLAN: 'forklift.konveyor.io.plan',\n FORKLIFT_MIGRATION: 'forklift.konveyor.io.migration',\n};\n\nexport const VOLUME_SNAPSHOT = 'snapshot.storage.k8s.io.volumesnapshot';\nexport const CSI_DRIVER = 'storage.k8s.io.csidriver';\nexport const VOLUME_SNAPSHOT_CLASS = 'snapshot.storage.k8s.io.volumesnapshotclass';\n","\n\n\n \n
\n
\n \n \n \n \n\n \n \n \n \n
\n \n\n\n","import { render } from \"./ActionMenu.vue?vue&type=template&id=375e9eb4&scoped=true\"\nimport script from \"./ActionMenu.vue?vue&type=script&lang=js\"\nexport * from \"./ActionMenu.vue?vue&type=script&lang=js\"\n\nimport \"./ActionMenu.vue?vue&type=style&index=0&id=375e9eb4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-375e9eb4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useRoute } from 'vue-router';\n\nimport { isAlternate } from '@shell/utils/platform';\nimport { RcDropdownMenu } from '@components/RcDropdown';\nimport { ButtonVariant, ButtonSize } from '@components/RcButton/types';\nimport { DropdownOption } from '@components/RcDropdown/types';\n\ntype RcDropdownMenuComponentProps = {\n buttonVariant?: ButtonVariant;\n buttonSize?: ButtonSize;\n buttonAriaLabel?: string;\n dropdownAriaLabel?: string;\n dataTestid?: string;\n resource?: Object;\n customActions?: DropdownOption[];\n}\n\nexport interface ActionMenuSelection {\n action: string;\n actionData: any;\n event: MouseEvent;\n route: ReturnType;\n [key: string]: any;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n ...{ inheritAttrs: false },\n __name: 'ActionMenuShell',\n props: {\n buttonVariant: {},\n buttonSize: {},\n buttonAriaLabel: {},\n dropdownAriaLabel: {},\n dataTestid: {},\n resource: {},\n customActions: {}\n },\n emits: [\"action-invoked\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst store = useStore();\n\nconst props = __props;\n\nconst openChanged = (event: boolean) => {\n if (event) {\n store.dispatch('action-menu/setResource', props.resource);\n }\n};\n\nconst emit = __emit;\nconst route = useRoute();\n\nconst execute = (action: any, event: MouseEvent, args?: any) => {\n if (action.disabled) {\n return;\n }\n\n const payload: ActionMenuSelection = {\n action: action.action,\n actionData: action,\n event,\n ...args,\n route,\n };\n\n emit('action-invoked', payload);\n\n // this will come from extensions...\n if (action.invoke) {\n const fn = action.invoke;\n\n if (fn && action.enabled) {\n const resources = store.getters['action-menu/resources'];\n const opts = {\n event,\n action,\n isAlt: isAlternate(event)\n };\n\n if (resources.length === 1) {\n fn.apply(this, [opts, resources]);\n }\n }\n } else if (!props.customActions) {\n // If the state of this component is controlled\n // by Vuex, mutate the store when an action is clicked.\n const opts = { alt: isAlternate(event) };\n\n store.dispatch('action-menu/execute', {\n action, args, opts\n });\n }\n};\n\nconst options = computed(() => store.getters['action-menu/optionsArray']);\n\nconst menuOptions = () => {\n if (props.customActions && props.customActions.length > 0) {\n return props.customActions;\n }\n\n return options.value;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(RcDropdownMenu), {\n \"button-variant\": __props.buttonVariant || 'link',\n \"button-size\": __props.buttonSize || 'medium',\n \"button-aria-label\": __props.buttonAriaLabel,\n \"dropdown-aria-label\": __props.dropdownAriaLabel,\n options: menuOptions(),\n \"data-testid\": __props.dataTestid,\n \"onUpdate:open\": openChanged,\n onSelect: _cache[0] || (_cache[0] = (e, option) => execute(option, e))\n }, null, 8, [\"button-variant\", \"button-size\", \"button-aria-label\", \"dropdown-aria-label\", \"options\", \"data-testid\"]))\n}\n}\n\n})","\n\n\n execute(option, e)\"\n />\n \n","import script from \"./ActionMenuShell.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ActionMenuShell.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { renderSlot as _renderSlot, withModifiers as _withModifiers, mergeProps as _mergeProps, createElementVNode as _createElementVNode, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, Teleport as _Teleport, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"data-modal\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createBlock(_Teleport, { to: \"#modals\" }, [\n _createVNode(_Transition, {\n name: \"modal-fade\",\n appear: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"modal-overlay\",\n \"data-modal\": _ctx.name,\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.handleClickOutside && _ctx.handleClickOutside(...args)))\n }, [\n _createElementVNode(\"div\", _mergeProps(_ctx.$attrs, {\n id: \"modal-container-element\",\n ref: \"modalRef\",\n class: [_ctx.customClass, \"modal-container\"],\n style: _ctx.modalStyles,\n role: \"dialog\",\n \"aria-modal\": \"true\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }), [\n _renderSlot(_ctx.$slots, \"default\")\n ], 16)\n ], 8, _hoisted_1)\n ]),\n _: 3\n })\n ]))\n}","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./AppModal.vue?vue&type=template&id=679a120e&ts=true\"\nimport script from \"./AppModal.vue?vue&type=script&lang=ts\"\nexport * from \"./AppModal.vue?vue&type=script&lang=ts\"\n\nimport \"./AppModal.vue?vue&type=style&index=0&id=679a120e&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = [\"name\", \"type\", \"disabled\", \"aria-disabled\", \"tab-index\", \"data-testid\"]\nconst _hoisted_2 = [\"alt\"]\nconst _hoisted_3 = {\n key: 2,\n \"data-testid\": \"async-btn-display-label\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_clean_tooltip = _resolveDirective(\"clean-tooltip\")!\n const _directive_clean_html = _resolveDirective(\"clean-html\")!\n\n return (_openBlock(), _createElementBlock(\"button\", {\n ref: \"btn\",\n role: \"button\",\n class: _normalizeClass(_ctx.classes),\n name: _ctx.name,\n type: _ctx.type,\n disabled: _ctx.disabled,\n \"aria-disabled\": _ctx.appearsDisabled,\n \"tab-index\": _ctx.tabIndex,\n \"data-testid\": _ctx.componentTestid + '-async-button',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.clicked && _ctx.clicked(...args)))\n }, [\n (_ctx.isManualRefresh)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass({'mr-10': _ctx.displayIcon && _ctx.size !== 'sm', 'mr-5': _ctx.displayIcon && _ctx.size === 'sm'})\n }, _toDisplayString(_ctx.t('action.refresh')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.displayIcon)\n ? _withDirectives((_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass({icon: true, 'icon-lg': true, [_ctx.displayIcon]: true, 'mr-0': _ctx.isManualRefresh}),\n alt: _ctx.t('asyncButton.alt.iconAlt')\n }, null, 10, _hoisted_2)), [\n [_directive_clean_tooltip, _ctx.tooltip]\n ])\n : _createCommentVNode(\"\", true),\n (_ctx.labelAs === 'text' && _ctx.displayLabel)\n ? _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_3, null, 512)), [\n [_directive_clean_tooltip, _ctx.tooltip],\n [_directive_clean_html, _ctx.displayLabel]\n ])\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_1))\n}","\n\n\n \n {{ t('action.refresh') }} \n \n \n \n \n\n\n","\nexport default {\n memberOfObject: (obj: { [key: string]: any}, key: string): V => {\n return Object.entries(obj || {}).find(([k]) => k === key) as unknown as V;\n },\n memberOfComponent: (obj: object | undefined, key: string): V => {\n return (obj as any as { [key: string]: any})[key] as V;\n },\n};\n","import { render } from \"./AsyncButton.vue?vue&type=template&id=21c97bb9&scoped=true&ts=true\"\nimport script from \"./AsyncButton.vue?vue&type=script&lang=ts\"\nexport * from \"./AsyncButton.vue?vue&type=script&lang=ts\"\n\nimport \"./AsyncButton.vue?vue&type=style&index=0&id=21c97bb9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-21c97bb9\"]])\n\nexport default __exports__","\n\n\n (optionKey ? get(opt, optionKey) : getOptionLabel(opt))\n \"\n :get-option-label=\"(opt) => getOptionLabel(opt)\"\n :selectable=\"selectable\"\n @search:blur=\"onBlur\"\n @search:focus=\"onFocus\"\n @update:modelValue=\"$emit('click-action', $event)\"\n >\n \n \n \n\n \n \n {{ option.label }}\n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./ButtonDropdown.vue?vue&type=template&id=2ab9ff7a&scoped=true\"\nimport script from \"./ButtonDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./ButtonDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./ButtonDropdown.vue?vue&type=style&index=0&id=2ab9ff7a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2ab9ff7a\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n {{ opt.label }} \n \n \n
\n \n","import { render } from \"./ButtonGroup.vue?vue&type=template&id=67e2d4d0\"\nimport script from \"./ButtonGroup.vue?vue&type=script&lang=js\"\nexport * from \"./ButtonGroup.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"alt\"]\n\nimport { computed } from 'vue';\n\ntype Props = {\n borderless?: boolean;\n invisible?: boolean;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ButtonMultiAction',\n props: {\n borderless: { type: Boolean },\n invisible: { type: Boolean }\n },\n emits: ['click'],\n setup(__props: any) {\n\n\n\nconst props = __props;\n\nconst buttonClass = computed(() => {\n return {\n borderless: props?.borderless,\n invisible: props?.invisible,\n };\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n type: \"button\",\n class: _normalizeClass([\"btn btn-sm role-multi-action actions\", buttonClass.value]),\n role: \"button\",\n onClick: _cache[0] || (_cache[0] = (e) => _ctx.$emit('click', e))\n }, [\n _createElementVNode(\"i\", {\n class: \"icon icon-actions\",\n alt: _ctx.t('sortableTable.tableActionsImgAlt')\n }, null, 8, _hoisted_1)\n ], 2))\n}\n}\n\n})","\n\n\n $emit('click', e)\"\n >\n \n \n \n\n\n","import script from \"./ButtonMultiAction.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ButtonMultiAction.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ButtonMultiAction.vue?vue&type=style&index=0&id=a3361b40&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a3361b40\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
{{ t('codeMirror.escapeText') }} \n
\n
\n Loading...\n
\n
\n \n\n\n","import { render } from \"./CodeMirror.vue?vue&type=template&id=13e8b3f5\"\nimport script from \"./CodeMirror.vue?vue&type=script&lang=js\"\nexport * from \"./CodeMirror.vue?vue&type=script&lang=js\"\n\nimport \"./CodeMirror.vue?vue&type=style&index=0&id=13e8b3f5&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./CopyToClipboard.vue?vue&type=template&id=2d7c8bd6&scoped=true\"\nimport script from \"./CopyToClipboard.vue?vue&type=script&lang=js\"\nexport * from \"./CopyToClipboard.vue?vue&type=script&lang=js\"\n\nimport \"./CopyToClipboard.vue?vue&type=style&index=0&id=2d7c8bd6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d7c8bd6\"]])\n\nexport default __exports__","\n\n\n \n \n \n {{ description }}\n
\n \n \n \n
\n \n
\n \n
\n \n
\n
\n
\n
\n {{ t(subtype.bannerAbbrv) }} \n {{ subtype.bannerAbbrv }} \n
\n
\n {{ subtype.id.slice(0, 1).toUpperCase() }}\n
\n
\n
\n
\n
\n
\n
\n \n {{ subtype.description }} \n
\n
\n
\n \n
\n \n
\n \n \n \n
errors = e\"\n >\n \n \n \n \n
\n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n $emit('error', e)\"\n >\n \n \n \n \n \n \n \n \n \n \n\n\n","\n\n\n \n \n\n\n","\n\n\n \n \n \n \n \n \n\n\n","import { render } from \"./ResourceCancelModal.vue?vue&type=template&id=715d956d&scoped=true\"\nimport script from \"./ResourceCancelModal.vue?vue&type=script&lang=js\"\nexport * from \"./ResourceCancelModal.vue?vue&type=script&lang=js\"\n\nimport \"./ResourceCancelModal.vue?vue&type=style&index=0&id=715d956d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-715d956d\"]])\n\nexport default __exports__","import { render } from \"./CruResourceFooter.vue?vue&type=template&id=6d6bcbd0\"\nimport script from \"./CruResourceFooter.vue?vue&type=script&lang=js\"\nexport * from \"./CruResourceFooter.vue?vue&type=script&lang=js\"\n\nimport \"./CruResourceFooter.vue?vue&type=style&index=0&id=6d6bcbd0&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n
\n
\n \n
\n \n \n \n
\n \n \n
\n
\n \n \n
\n \n \n
\n
\n \n\n\n","import { render } from \"./Wizard.vue?vue&type=template&id=085239e6&scoped=true\"\nimport script from \"./Wizard.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard.vue?vue&type=script&lang=js\"\n\nimport \"./Wizard.vue?vue&type=style&index=0&id=085239e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-085239e6\"]])\n\nexport default __exports__","import { render } from \"./CruResource.vue?vue&type=template&id=05345bf3&scoped=true\"\nimport script from \"./CruResource.vue?vue&type=script&lang=js\"\nexport * from \"./CruResource.vue?vue&type=script&lang=js\"\n\nimport \"./CruResource.vue?vue&type=style&index=0&id=05345bf3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05345bf3\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n {{ label }}\n \n\n
\n
{{ body }} \n\n
\n\n
\n \n \n
\n\n
\n {{ plusMore }} \n \n\n
\n \n \n \n \n
\n
\n \n\n\n\n\n","import { render } from \"./DetailText.vue?vue&type=template&id=12df2354&scoped=true\"\nimport script from \"./DetailText.vue?vue&type=script&lang=js\"\nexport * from \"./DetailText.vue?vue&type=script&lang=js\"\n\nimport \"./DetailText.vue?vue&type=style&index=0&id=12df2354&lang=scss&scoped=true\"\nimport \"./DetailText.vue?vue&type=style&index=1&id=12df2354&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12df2354\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"chrome\" }\nconst _hoisted_2 = { class: \"header pp-4\" }\nconst _hoisted_3 = { class: \"title\" }\nconst _hoisted_4 = { class: \"actions\" }\nconst _hoisted_5 = [\"aria-label\"]\nconst _hoisted_6 = { class: \"body pp-4\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer pp-4\"\n}\nconst _hoisted_8 = { class: \"actions\" }\n\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\nimport { computed } from 'vue';\nimport { Props } from './types';\nimport RcButton from '@components/RcButton/RcButton.vue';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Chrome',\n props: {\n ariaTarget: {},\n removeFooter: { type: Boolean }\n },\n emits: ['close'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\nconst emit = __emit;\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close', { target: props.ariaTarget }));\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"header\", {}, () => [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"btn role-link\",\n \"aria-label\": ariaLabel.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('close')))\n }, [...(_cache[2] || (_cache[2] = [\n _createElementVNode(\"i\", { class: \"icon icon-close\" }, null, -1)\n ]))], 8, _hoisted_5)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"body\")\n ]),\n (!__props.removeFooter)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _renderSlot(_ctx.$slots, \"footer\", {}, () => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(RcButton, {\n variant: \"secondary\",\n size: \"large\",\n \"aria-label\": ariaLabel.value,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(i18n).t('component.drawer.chrome.close')), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"]),\n _renderSlot(_ctx.$slots, \"additional-actions\")\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n \n \n\n","import script from \"./Chrome.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Chrome.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Chrome.vue?vue&type=style&index=0&id=72e8ee84&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72e8ee84\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { useI18n } from '@shell/composables/useI18n';\nimport { _VIEW } from '@shell/config/query-params';\nimport { useStore } from 'vuex';\nimport Tab from '@shell/components/Tabbed/Tab.vue';\nimport { useTemplateRef } from 'vue';\nimport ResourceYaml from '@shell/components/ResourceYaml.vue';\nimport { YamlProps } from '@shell/components/Drawer/ResourceDetailDrawer/types';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'YamlTab',\n props: {\n resource: {},\n yaml: {}\n },\n setup(__props: any) {\n\nconst props = __props;\nconst store = useStore();\nconst i18n = useI18n(store);\nconst yamlComponent: any = useTemplateRef('yaml');\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(Tab, {\n class: \"yaml-tab\",\n name: \"yaml-tab\",\n label: _unref(i18n).t('component.drawer.resourceDetailDrawer.yamlTab.title'),\n onActive: _cache[0] || (_cache[0] = () => yamlComponent.value?.refresh())\n }, {\n default: _withCtx(() => [\n _createVNode(ResourceYaml, {\n ref: \"yaml\",\n value: props.resource,\n yaml: props.yaml,\n mode: _unref(_VIEW)\n }, null, 8, [\"value\", \"yaml\", \"mode\"])\n ]),\n _: 1\n }, 8, [\"label\"]))\n}\n}\n\n})","\n\n yamlComponent?.refresh()\"\n >\n \n \n \n\n\n","import script from \"./YamlTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./YamlTab.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./YamlTab.vue?vue&type=style&index=0&id=57e9a5ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-57e9a5ee\"]])\n\nexport default __exports__","\n\n\n \n \n
\n \n\n\n","import { render } from \"./DrawerCard.vue?vue&type=template&id=9f186538&scoped=true\"\nconst script = {}\n\nimport \"./DrawerCard.vue?vue&type=style&index=0&id=9f186538&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9f186538\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nimport { useI18n } from '@shell/composables/useI18n';\nimport { _VIEW } from '@shell/config/query-params';\nimport { useStore } from 'vuex';\nimport Tab from '@shell/components/Tabbed/Tab.vue';\nimport DrawerCard from '@shell/components/Drawer/DrawerCard.vue';\nimport { ConfigProps } from '@shell/components/Drawer/ResourceDetailDrawer/types';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ConfigTab',\n props: {\n resource: {},\n component: {},\n resourceType: {},\n defaultTab: {}\n },\n setup(__props: any) {\n\nconst props = __props;\nconst store = useStore();\nconst i18n = useI18n(store);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(Tab, {\n class: \"config-tab\",\n name: \"config-tab\",\n label: _unref(i18n).t('component.drawer.resourceDetailDrawer.configTab.title')\n }, {\n default: _withCtx(() => [\n _createVNode(DrawerCard, null, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent(props.component), {\n value: props.resource,\n liveValue: props.resource,\n resourceType: props.resourceType,\n mode: _unref(_VIEW),\n \"real-mode\": _unref(_VIEW),\n \"initial-value\": props.resource,\n \"use-tabbed-hash\": false /* Have to disable hashing on child components or it modifies the url and closes the drawer */,\n \"default-tab\": props.defaultTab,\n as: \"config\"\n }, null, 8, [\"value\", \"liveValue\", \"resourceType\", \"mode\", \"real-mode\", \"initial-value\", \"default-tab\"]))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"label\"]))\n}\n}\n\n})","\n\n \n \n \n \n \n \n\n\n","import script from \"./ConfigTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ConfigTab.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ConfigTab.vue?vue&type=style&index=0&id=7d0d0cce&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7d0d0cce\"]])\n\nexport default __exports__","\n\n \n \n \n {{ title }}\n \n \n {activeTab = selectedName;}\"\n >\n \n \n \n \n \n \n {{ action.label }}\n \n \n \n \n","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, mergeProps as _mergeProps, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, withCtx as _withCtx } from \"vue\"\n\nimport Drawer from '@shell/components/Drawer/Chrome.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\nimport Tabbed from '@shell/components/Tabbed/index.vue';\nimport YamlTab, { Props as YamlProps } from '@shell/components/Drawer/ResourceDetailDrawer/YamlTab.vue';\nimport { useDefaultConfigTabProps, useDefaultYamlTabProps, useResourceDetailDrawerProvider } from '@shell/components/Drawer/ResourceDetailDrawer/composables';\nimport ConfigTab from '@shell/components/Drawer/ResourceDetailDrawer/ConfigTab.vue';\nimport { computed, ref } from 'vue';\nimport RcButton from '@components/RcButton/RcButton.vue';\nimport StateDot from '@shell/components/StateDot/index.vue';\nimport { ResourceDetailDrawerProps } from '@shell/components/Drawer/ResourceDetailDrawer/types';\n\nconst editBttnDataTestId = 'save-configuration-bttn';\nconst componentTestid = 'configuration-drawer-tabbed';\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n resource: {},\n defaultTab: {},\n onClose: { type: Function }\n },\n emits: ['close'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\nconst emit = __emit;\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst yamlTabProps = ref(null);\nconst configTabProps = useDefaultConfigTabProps(props.resource);\n\nuseDefaultYamlTabProps(props.resource).then((props) => {\n yamlTabProps.value = props;\n});\n\nconst title = computed(() => {\n const resourceType = store.getters['type-map/labelFor']({ id: props.resource.type });\n const resourceName = props.resource.nameDisplay;\n\n return i18n.t('component.drawer.resourceDetailDrawer.title', { resourceType, resourceName });\n});\n\nconst activeTab = ref(configTabProps ? 'config-tab' : 'yaml-tab');\n\nconst isConfig = computed(() => {\n return activeTab.value === 'config-tab';\n});\n\nconst action = computed(() => {\n const ariaLabel = isConfig.value ? i18n.t('component.drawer.resourceDetailDrawer.ariaLabel.editConfig') : i18n.t('component.drawer.resourceDetailDrawer.ariaLabel.editYaml');\n const label = isConfig.value ? i18n.t('component.drawer.resourceDetailDrawer.ariaLabel.editConfig') : i18n.t('component.drawer.resourceDetailDrawer.ariaLabel.editYaml');\n const action = isConfig.value ? () => props.resource.goToEdit() : () => props.resource.goToEditYaml();\n\n return {\n ariaLabel,\n label,\n action\n };\n});\n\nconst canEdit = computed(() => {\n return isConfig.value ? props.resource.canEdit : props.resource.canEditYaml;\n});\n\nuseResourceDetailDrawerProvider();\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(Drawer, {\n ariaTarget: title.value,\n onClose: _cache[1] || (_cache[1] = ($event: any) => (emit('close')))\n }, {\n title: _withCtx(() => [\n _createVNode(StateDot, {\n color: __props.resource.stateSimpleColor,\n class: \"mmr-3\"\n }, null, 8, [\"color\"]),\n _createTextVNode(\" \" + _toDisplayString(title.value), 1)\n ]),\n body: _withCtx(() => [\n _createVNode(Tabbed, {\n useHash: false,\n showExtensionTabs: false,\n componentTestid: componentTestid,\n \"remove-borders\": true,\n onChanged: _cache[0] || (_cache[0] = ({selectedName}) => {activeTab.value = selectedName;})\n }, {\n default: _withCtx(() => [\n (_unref(configTabProps))\n ? (_openBlock(), _createBlock(ConfigTab, _mergeProps({ key: 0 }, _unref(configTabProps), {\n \"default-tab\": props.defaultTab\n }), null, 16, [\"default-tab\"]))\n : _createCommentVNode(\"\", true),\n (yamlTabProps.value)\n ? (_openBlock(), _createBlock(YamlTab, _normalizeProps(_mergeProps({ key: 1 }, yamlTabProps.value)), null, 16))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n \"additional-actions\": _withCtx(() => [\n (canEdit.value)\n ? (_openBlock(), _createBlock(RcButton, {\n key: 0,\n variant: \"primary\",\n size: \"large\",\n \"aria-label\": action.value.ariaLabel,\n \"data-testid\": editBttnDataTestId,\n onClick: action.value.action\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(action.value.label), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"ariaTarget\"]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./ExtensionPanel.vue?vue&type=template&id=1a394d3c\"\nimport script from \"./ExtensionPanel.vue?vue&type=script&lang=js\"\nexport * from \"./ExtensionPanel.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n {{ t(messageKey) }}\n \n \n {{ message }}\n \n \n
\n
\n \n\n\n","import { render } from \"./IconMessage.vue?vue&type=template&id=01996ade&scoped=true\"\nimport script from \"./IconMessage.vue?vue&type=script&lang=js\"\nexport * from \"./IconMessage.vue?vue&type=script&lang=js\"\n\nimport \"./IconMessage.vue?vue&type=style&index=0&id=01996ade&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-01996ade\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n\n","'use strict';\n\n// Utilities to generate a css filter to give a required color\n\nclass Color {\n constructor(r, g, b) {\n this.set(r, g, b);\n }\n\n toString() {\n return `rgb(${ Math.round(this.r) }, ${ Math.round(this.g) }, ${ Math.round(this.b) })`;\n }\n\n set(r, g, b) {\n this.r = this.clamp(r);\n this.g = this.clamp(g);\n this.b = this.clamp(b);\n }\n\n hueRotate(angle = 0) {\n angle = angle / 180 * Math.PI;\n const sin = Math.sin(angle);\n const cos = Math.cos(angle);\n\n this.multiply([\n 0.213 + cos * 0.787 - sin * 0.213,\n 0.715 - cos * 0.715 - sin * 0.715,\n 0.072 - cos * 0.072 + sin * 0.928,\n 0.213 - cos * 0.213 + sin * 0.143,\n 0.715 + cos * 0.285 + sin * 0.140,\n 0.072 - cos * 0.072 - sin * 0.283,\n 0.213 - cos * 0.213 - sin * 0.787,\n 0.715 - cos * 0.715 + sin * 0.715,\n 0.072 + cos * 0.928 + sin * 0.072,\n ]);\n }\n\n grayscale(value = 1) {\n this.multiply([\n 0.2126 + 0.7874 * (1 - value),\n 0.7152 - 0.7152 * (1 - value),\n 0.0722 - 0.0722 * (1 - value),\n 0.2126 - 0.2126 * (1 - value),\n 0.7152 + 0.2848 * (1 - value),\n 0.0722 - 0.0722 * (1 - value),\n 0.2126 - 0.2126 * (1 - value),\n 0.7152 - 0.7152 * (1 - value),\n 0.0722 + 0.9278 * (1 - value),\n ]);\n }\n\n sepia(value = 1) {\n this.multiply([\n 0.393 + 0.607 * (1 - value),\n 0.769 - 0.769 * (1 - value),\n 0.189 - 0.189 * (1 - value),\n 0.349 - 0.349 * (1 - value),\n 0.686 + 0.314 * (1 - value),\n 0.168 - 0.168 * (1 - value),\n 0.272 - 0.272 * (1 - value),\n 0.534 - 0.534 * (1 - value),\n 0.131 + 0.869 * (1 - value),\n ]);\n }\n\n saturate(value = 1) {\n this.multiply([\n 0.213 + 0.787 * value,\n 0.715 - 0.715 * value,\n 0.072 - 0.072 * value,\n 0.213 - 0.213 * value,\n 0.715 + 0.285 * value,\n 0.072 - 0.072 * value,\n 0.213 - 0.213 * value,\n 0.715 - 0.715 * value,\n 0.072 + 0.928 * value,\n ]);\n }\n\n multiply(matrix) {\n const newR = this.clamp(this.r * matrix[0] + this.g * matrix[1] + this.b * matrix[2]);\n const newG = this.clamp(this.r * matrix[3] + this.g * matrix[4] + this.b * matrix[5]);\n const newB = this.clamp(this.r * matrix[6] + this.g * matrix[7] + this.b * matrix[8]);\n\n this.r = newR;\n this.g = newG;\n this.b = newB;\n }\n\n brightness(value = 1) {\n this.linear(value);\n }\n\n contrast(value = 1) {\n this.linear(value, -(0.5 * value) + 0.5);\n }\n\n linear(slope = 1, intercept = 0) {\n this.r = this.clamp(this.r * slope + intercept * 255);\n this.g = this.clamp(this.g * slope + intercept * 255);\n this.b = this.clamp(this.b * slope + intercept * 255);\n }\n\n invert(value = 1) {\n this.r = this.clamp((value + this.r / 255 * (1 - 2 * value)) * 255);\n this.g = this.clamp((value + this.g / 255 * (1 - 2 * value)) * 255);\n this.b = this.clamp((value + this.b / 255 * (1 - 2 * value)) * 255);\n }\n\n hsl() {\n // Code taken from https://stackoverflow.com/a/9493060/2688027, licensed under CC BY-SA.\n const r = this.r / 255;\n const g = this.g / 255;\n const b = this.b / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = l;\n let s = l;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return {\n h: h * 100,\n s: s * 100,\n l: l * 100,\n };\n }\n\n clamp(value) {\n if (value > 255) {\n value = 255;\n } else if (value < 0) {\n value = 0;\n }\n\n return value;\n }\n}\n\nexport class Solver {\n constructor(rgb) {\n this.target = new Color(rgb.r, rgb.g, rgb.b);\n this.targetHSL = this.target.hsl();\n this.reusedColor = new Color(0, 0, 0);\n }\n\n solve() {\n const result = this.solveNarrow(this.solveWide());\n\n return {\n values: result.values,\n loss: result.loss,\n filter: this.css(result.values),\n filterVal: this.css(result.values).replace('filter: ', '').replace(';', '')\n };\n }\n\n solveWide() {\n const A = 5;\n const c = 15;\n const a = [60, 180, 18000, 600, 1.2, 1.2];\n\n let best = { loss: Infinity };\n\n for (let i = 0; best.loss > 25 && i < 3; i++) {\n const initial = [50, 20, 3750, 50, 100, 100];\n const result = this.spsa(A, a, c, initial, 1000);\n\n if (result.loss < best.loss) {\n best = result;\n }\n }\n\n return best;\n }\n\n solveNarrow(wide) {\n const A = wide.loss;\n const c = 2;\n const A1 = A + 1;\n const a = [0.25 * A1, 0.25 * A1, A1, 0.25 * A1, 0.2 * A1, 0.2 * A1];\n\n return this.spsa(A, a, c, wide.values, 500);\n }\n\n spsa(A, a, c, values, iters) {\n const alpha = 1;\n const gamma = 0.16666666666666666;\n\n let best = null;\n let bestLoss = Infinity;\n const deltas = new Array(6);\n const highArgs = new Array(6);\n const lowArgs = new Array(6);\n\n for (let k = 0; k < iters; k++) {\n const ck = c / Math.pow(k + 1, gamma);\n\n for (let i = 0; i < 6; i++) {\n deltas[i] = Math.random() > 0.5 ? 1 : -1;\n highArgs[i] = values[i] + ck * deltas[i];\n lowArgs[i] = values[i] - ck * deltas[i];\n }\n\n const lossDiff = this.loss(highArgs) - this.loss(lowArgs);\n\n for (let i = 0; i < 6; i++) {\n const g = lossDiff / (2 * ck) * deltas[i];\n const ak = a[i] / Math.pow(A + k + 1, alpha);\n\n values[i] = fix(values[i] - ak * g, i);\n }\n\n const loss = this.loss(values);\n\n if (loss < bestLoss) {\n best = values.slice(0);\n bestLoss = loss;\n }\n }\n\n return { values: best, loss: bestLoss };\n\n function fix(value, idx) {\n let max = 100;\n\n if (idx === 2 /* saturate */) {\n max = 7500;\n } else if (idx === 4 /* brightness */ || idx === 5 /* contrast */) {\n max = 200;\n }\n\n if (idx === 3 /* hue-rotate */) {\n if (value > max) {\n value %= max;\n } else if (value < 0) {\n value = max + value % max;\n }\n } else if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n\n return value;\n }\n }\n\n loss(filters) {\n // Argument is array of percentages.\n const color = this.reusedColor;\n\n color.set(0, 0, 0);\n\n color.invert(filters[0] / 100);\n color.sepia(filters[1] / 100);\n color.saturate(filters[2] / 100);\n color.hueRotate(filters[3] * 3.6);\n color.brightness(filters[4] / 100);\n color.contrast(filters[5] / 100);\n\n const colorHSL = color.hsl();\n\n return (\n Math.abs(color.r - this.target.r) +\n Math.abs(color.g - this.target.g) +\n Math.abs(color.b - this.target.b) +\n Math.abs(colorHSL.h - this.targetHSL.h) +\n Math.abs(colorHSL.s - this.targetHSL.s) +\n Math.abs(colorHSL.l - this.targetHSL.l)\n );\n }\n\n css(filters) {\n function fmt(idx, multiplier = 1) {\n return Math.round(filters[idx] * multiplier);\n }\n\n return `filter: invert(${ fmt(0) }%) sepia(${ fmt(1) }%) saturate(${ fmt(2) }%) hue-rotate(${ fmt(3, 3.6) }deg) brightness(${ fmt(4) }%) contrast(${ fmt(5) }%);`;\n }\n}\n","import { render } from \"./IconOrSvg.vue?vue&type=template&id=39f189f2&scoped=true\"\nimport script from \"./IconOrSvg.vue?vue&type=script&lang=js\"\nexport * from \"./IconOrSvg.vue?vue&type=script&lang=js\"\n\nimport \"./IconOrSvg.vue?vue&type=style&index=0&id=39f189f2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39f189f2\"]])\n\nexport default __exports__","\n\n\n \n
\n
Step {{ step }} \n \n
\n
\n \n\n\n","import { render } from \"./InfoBox.vue?vue&type=template&id=1c5683df&scoped=true\"\nimport script from \"./InfoBox.vue?vue&type=script&lang=js\"\nexport * from \"./InfoBox.vue?vue&type=script&lang=js\"\n\nimport \"./InfoBox.vue?vue&type=style&index=0&id=1c5683df&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c5683df\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./LazyImage.vue?vue&type=template&id=7e25eada\"\nimport script from \"./LazyImage.vue?vue&type=script&lang=js\"\nexport * from \"./LazyImage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n
\n \n\n\n","import { render } from \"./Loading.vue?vue&type=template&id=fac347aa&scoped=true\"\nimport script from \"./Loading.vue?vue&type=script&lang=js\"\nexport * from \"./Loading.vue?vue&type=script&lang=js\"\n\nimport \"./Loading.vue?vue&type=style&index=0&id=fac347aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fac347aa\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n\n \n \n\n \n \n
\n \n\n \n \n \n \n \n \n \n \n\n\n\n\n","import { render } from \"./ModalWithCard.vue?vue&type=template&id=00744f30&scoped=true\"\nimport script from \"./ModalWithCard.vue?vue&type=script&lang=js\"\nexport * from \"./ModalWithCard.vue?vue&type=script&lang=js\"\n\nimport \"./ModalWithCard.vue?vue&type=style&index=0&id=00744f30&lang=scss&scoped=true\"\nimport \"./ModalWithCard.vue?vue&type=style&index=1&id=00744f30&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00744f30\"]])\n\nexport default __exports__","\n\n\n \n \n {{ formattedPercentage }} \n \n \n\n\n","\r\n\r\n\r\n \r\n \r\n\r\n\r\n","import { render } from \"./Bar.vue?vue&type=template&id=b4f4e2ae&scoped=true\"\nimport script from \"./Bar.vue?vue&type=script&lang=js\"\nexport * from \"./Bar.vue?vue&type=script&lang=js\"\n\nimport \"./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b4f4e2ae\"]])\n\nexport default __exports__","import { render } from \"./PercentageBar.vue?vue&type=template&id=4ade54a6&scoped=true\"\nimport script from \"./PercentageBar.vue?vue&type=script&lang=js\"\nexport * from \"./PercentageBar.vue?vue&type=script&lang=js\"\n\nimport \"./PercentageBar.vue?vue&type=style&index=0&id=4ade54a6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ade54a6\"]])\n\nexport default __exports__","\n\n\n 1}\"\n :aria-label=\"ariaLabelText\"\n role=\"progressbar\"\n >\n
\n
\n \n\n\n","import { render } from \"./ProgressBarMulti.vue?vue&type=template&id=154bda8a&scoped=true\"\nimport script from \"./ProgressBarMulti.vue?vue&type=script&lang=js\"\nexport * from \"./ProgressBarMulti.vue?vue&type=script&lang=js\"\n\nimport \"./ProgressBarMulti.vue?vue&type=style&index=0&id=154bda8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-154bda8a\"]])\n\nexport default __exports__","\n \n \n
\n \n\n\n","import { render } from \"./VerticalGap.vue?vue&type=template&id=43905492&scoped=true\"\nconst script = {}\n\nimport \"./VerticalGap.vue?vue&type=style&index=0&id=43905492&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-43905492\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"detail-card\" }\nconst _hoisted_2 = { class: \"heading\" }\nconst _hoisted_3 = { class: \"title\" }\nconst _hoisted_4 = { class: \"body\" }\n\nimport VerticalGap from '@shell/components/Resource/Detail/Card/VerticalGap.vue';\n\nexport interface CardProps {\n title?: string;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n title: {}\n },\n setup(__props: any) {\n\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"heading\", {}, () => [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"title\", {}, () => [\n _createTextVNode(_toDisplayString(__props.title), 1)\n ])\n ])\n ]),\n _renderSlot(_ctx.$slots, \"heading-action\")\n ]),\n _createVNode(VerticalGap),\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ]))\n}\n}\n\n})","\n\n\n \n
\n
\n \n \n {{ title }}\n \n
\n \n
\n
\n
\n
\n \n
\n
\n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=199e5bcf&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-199e5bcf\"]])\n\nexport default __exports__","\n\n\n \n \n \n
\n \n \n
\n \n
\n\n
\n\n
\n\n
\n
\n
\n
\n
\n \n\n\n","\n \n \n \n \n\n\n","import { render } from \"./Title.vue?vue&type=template&id=1e04f798&scoped=true\"\nconst script = {}\n\nimport \"./Title.vue?vue&type=style&index=0&id=1e04f798&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e04f798\"]])\n\nexport default __exports__","\n \n \n
\n \n\n\n","import { render } from \"./Top.vue?vue&type=template&id=9aaa96a4&scoped=true\"\nconst script = {}\n\nimport \"./Top.vue?vue&type=style&index=0&id=9aaa96a4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9aaa96a4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderSlot as _renderSlot, renderList as _renderList, Fragment as _Fragment, resolveDynamicComponent as _resolveDynamicComponent } from \"vue\"\n\nconst _hoisted_1 = { class: \"title-bar\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"resource-text\"\n}\nconst _hoisted_3 = { class: \"resource-name masthead-resource-title\" }\nconst _hoisted_4 = { class: \"actions\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"bottom description text-deemphasized\"\n}\n\n\nimport BadgeState from '@components/BadgeState/BadgeState.vue';\nimport { RouteLocationRaw, useRouter } from 'vue-router';\nimport Title from '@shell/components/Resource/Detail/TitleBar/Title.vue';\nimport Top from '@shell/components/Resource/Detail/TitleBar/Top.vue';\nimport ActionMenu from '@shell/components/ActionMenuShell.vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from '@shell/composables/useI18n';\nimport RcButton from '@components/RcButton/RcButton.vue';\nimport TabTitle from '@shell/components/TabTitle';\nimport { computed, ref, VueElement, watch } from 'vue';\nimport { _CONFIG, AS } from '@shell/config/query-params';\nimport { ExtensionPoint, PanelLocation } from '@shell/core/types';\nimport ExtensionPanel from '@shell/components/ExtensionPanel.vue';\nimport { ButtonVariantNewProps, ButtonSizeNewProps } from '~/pkg/rancher-components/src/components/RcButton/types';\nimport { isArray } from 'lodash';\n\nexport interface Badge {\n color: 'bg-success' | 'bg-error' | 'bg-warning' | 'bg-info';\n label: string;\n}\n\nexport interface AdditionalActionButton extends ButtonVariantNewProps, ButtonSizeNewProps {\n label: string;\n onClick: () => void;\n}\n\nexport interface TitleBarProps {\n resource: any;\n resourceTypeLabel: string;\n resourceName: string;\n\n resourceTo?: RouteLocationRaw;\n description?: string;\n badge?: Badge;\n\n additionalActions?: VueElement | AdditionalActionButton[];\n\n // This should be replaced with a list of menu items we want to render.\n // I don't have the time right now to swap this out though.\n actionMenuResource?: any;\n onShowConfiguration?: (returnFocusSelector: string) => void;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n resource: {},\n resourceTypeLabel: {},\n resourceName: {},\n resourceTo: {},\n description: {},\n badge: {},\n additionalActions: {},\n actionMenuResource: {},\n onShowConfiguration: { type: Function }\n },\n emits: ['show-configuration'],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst store = useStore();\nconst i18n = useI18n(store);\nconst router = useRouter();\n\nconst emit = __emit;\nconst showConfigurationDataTestId = 'show-configuration-cta';\nconst showConfigurationReturnFocusSelector = computed(() => `[data-testid=\"${ showConfigurationDataTestId }\"]`);\n\nconst currentView = ref(router?.currentRoute?.value?.query?.as || _CONFIG);\n\nwatch(\n () => currentView.value,\n () => {\n router.push({ query: { [AS]: currentView.value } });\n }\n);\n\nconst showAdditionalActionButtons = computed(() => isArray(__props.additionalActions));\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _directive_ui_context = _resolveDirective(\"ui-context\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Top, null, {\n default: _withCtx(() => [\n _createVNode(Title, { class: \"title\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(TabTitle), { \"show-child\": false }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(__props.resourceTypeLabel), 1)\n ]),\n _: 1\n }),\n (__props.resourceTo)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: __props.resourceTo,\n class: \"resource-link\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(__props.resourceTypeLabel) + \": \", 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(__props.resourceTypeLabel) + \": \", 1)),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(__props.resourceName), 1),\n (__props.badge)\n ? _withDirectives((_openBlock(), _createBlock(BadgeState, {\n key: 2,\n class: \"badge-state\",\n color: __props.badge.color,\n label: __props.badge.label\n }, null, 8, [\"color\", \"label\"])), [\n [_directive_ui_context, { store: _unref(store), icon: 'icon-folder', hookable: true, value: __props.resource, tag: '__details-state', description: 'Details' }]\n ])\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"additional-actions\", {}, () => [\n (__props.additionalActions)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (showAdditionalActionButtons.value)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList((__props.additionalActions as AdditionalActionButton[]), (actionButtonProps, i) => {\n return (_openBlock(), _createBlock(RcButton, {\n key: `action-button-${i}`,\n variant: actionButtonProps.variant,\n size: actionButtonProps.size,\n onClick: actionButtonProps.onClick\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(actionButtonProps.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"size\", \"onClick\"]))\n }), 128))\n : (_openBlock(), _createBlock(_resolveDynamicComponent(__props.additionalActions), { key: 1 }))\n ], 64))\n : _createCommentVNode(\"\", true)\n ]),\n (__props.onShowConfiguration)\n ? (_openBlock(), _createBlock(RcButton, {\n key: 0,\n \"data-testid\": showConfigurationDataTestId,\n class: \"show-configuration\",\n variant: \"primary\",\n size: \"large\",\n \"aria-label\": _unref(i18n).t('component.resource.detail.titleBar.ariaLabel.showConfiguration', { resource: __props.resourceName }),\n onClick: _cache[0] || (_cache[0] = () => emit('show-configuration', showConfigurationReturnFocusSelector.value))\n }, {\n default: _withCtx(() => [\n _cache[1] || (_cache[1] = _createElementVNode(\"i\", {\n class: \"icon icon-document\",\n \"aria-hidden\": \"true\"\n }, null, -1)),\n _createTextVNode(\" \" + _toDisplayString(_unref(i18n).t('component.resource.detail.titleBar.showConfiguration')), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"]))\n : _createCommentVNode(\"\", true),\n (__props.actionMenuResource)\n ? (_openBlock(), _createBlock(ActionMenu, {\n key: 1,\n \"button-variant\": \"multiAction\",\n resource: __props.actionMenuResource,\n \"data-testid\": \"masthead-action-menu\",\n \"button-aria-label\": _unref(i18n).t('component.resource.detail.titleBar.ariaLabel.actionMenu', { resource: __props.resourceName })\n }, null, 8, [\"resource\", \"button-aria-label\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 3\n }),\n (__props.description)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(__props.description), 1))\n : _createCommentVNode(\"\", true),\n _createVNode(ExtensionPanel, {\n resource: __props.resource,\n type: _unref(ExtensionPoint).PANEL,\n location: _unref(PanelLocation).DETAILS_MASTHEAD\n }, null, 8, [\"resource\", \"type\", \"location\"])\n ]))\n}\n}\n\n})","\n\n\n\n\n \n
\n \n \n {{ resourceTypeLabel }}\n \n \n {{ resourceTypeLabel }}:\n \n \n {{ resourceTypeLabel }}:\n \n \n {{ resourceName }}\n \n \n \n \n
\n \n \n \n {{ actionButtonProps.label }}\n \n \n \n \n \n
emit('show-configuration', showConfigurationReturnFocusSelector)\"\n >\n \n {{ i18n.t('component.resource.detail.titleBar.showConfiguration') }}\n \n
\n
\n \n
\n {{ description }}\n
\n
\n
\n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=798952e4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-798952e4\"]])\n\nexport default __exports__","import { computed, Ref, toValue } from 'vue';\nimport { useStore } from 'vuex';\nimport { Props as BannerProps } from '@components/Banner/Banner.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport ResourceClass from '@shell/plugins/dashboard-store/resource-class';\n\nexport const useResourceDetailBannerProps = (resource: any): Ref => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n\n return computed(() => {\n const options = store.getters[`type-map/optionsFor`](resourceValue.type);\n\n if (options.hideBanner) {\n return;\n }\n\n if (resourceValue?.stateObj?.error) {\n const defaultErrorMessage = i18n.t('resourceDetail.masthead.defaultBannerMessage.error', undefined, true);\n\n return {\n color: 'error',\n label: resourceValue.stateObj.message || defaultErrorMessage\n };\n }\n\n if (resourceValue?.spec?.paused) {\n return {\n color: 'info',\n label: i18n.t('asyncButton.pause.description')\n };\n }\n\n if (resourceValue?.stateObj?.transitioning) {\n const defaultTransitioningMessage = i18n.t('resourceDetail.masthead.defaultBannerMessage.transitioning', undefined, true);\n\n return {\n color: 'info',\n label: resourceValue.stateObj.message || defaultTransitioningMessage\n };\n }\n\n return undefined;\n });\n};\n\nexport const useOnShowConfiguration = (resource: any) => {\n return (returnFocusSelector?: string, defaultTab?: string) => {\n const resourceValue = toValue(resource);\n // Because extensions can make a copy of the resource-class it's possible that an extension will have a resource-class which predates the inclusion of showConfiguration\n // to still the rest of shell to consume\n const showConfiguration = resourceValue.showConfiguration ? resourceValue.showConfiguration.bind(resourceValue) : ResourceClass.prototype.showConfiguration.bind(resourceValue);\n\n showConfiguration(returnFocusSelector, defaultTab);\n };\n};\n","import { useOnShowConfiguration } from '@shell/components/Resource/Detail/composables';\nimport { TitleBarProps } from '@shell/components/Resource/Detail/TitleBar/index.vue';\nimport { computed, Ref, toValue } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { useStore } from 'vuex';\n\nexport const useDefaultTitleBarProps = (resource: any, resourceSubtype?: Ref): Ref => {\n const route = useRoute();\n const store = useStore();\n const resourceValue = toValue(resource);\n\n return computed(() => {\n const resourceSubtypeValue = toValue(resourceSubtype);\n const currentStore = store.getters['currentStore'](resourceValue.type);\n const schema = store.getters[`${ currentStore }/schemaFor`](resourceValue.type);\n const resourceTypeLabel = resourceValue.parentNameOverride || store.getters['type-map/labelFor'](schema);\n const resourceName = resourceSubtypeValue ? `${ resourceSubtypeValue } - ${ resourceValue.nameDisplay }` : resourceValue.nameDisplay;\n const resourceTo = resourceValue.listLocation || {\n name: 'c-cluster-product-resource',\n params: {\n product: 'explorer',\n cluster: route?.params.cluster,\n namespace: resourceValue.namespace,\n resource: resourceValue.type\n }\n };\n const onShowConfiguration = resourceValue.disableResourceDetailDrawer ? undefined : useOnShowConfiguration(resource);\n\n return {\n resource: resourceValue,\n resourceTypeLabel,\n resourceTo,\n resourceName,\n actionMenuResource: resourceValue,\n badge: {\n color: resourceValue.stateBackground,\n label: resourceValue.stateDisplay\n },\n description: resourceValue.description,\n additionalActions: resourceValue.detailPageAdditionalActions,\n onShowConfiguration\n };\n });\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"identifying-information\" }\nconst _hoisted_2 = [\"data-testid\"]\nconst _hoisted_3 = [\"for\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = [\"id\"]\nconst _hoisted_6 = [\"id\"]\nconst _hoisted_7 = [\"data-testid\", \"aria-label\"]\nconst _hoisted_8 = [\"data-testid\"]\n\n\nimport { RouteLocationRaw } from 'vue-router';\n\nexport interface Row {\n label: string;\n value?: string;\n valueOverride?: {\n component: any,\n props?: Object\n },\n to?: RouteLocationRaw;\n dataTestid?: string;\n valueDataTestid?: string;\n status?: 'success' | 'warning' | 'info' | 'error',\n}\n\nexport interface MetadataProps {\n rows: Row[];\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n rows: {}\n },\n setup(__props: any) {\n\n\n\nconst getRowValueId = (row:Row): string => `value-${ row.label }:${ row.value }`.toLowerCase().replaceAll(' ', '');\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.rows, (row) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `${row.label}:${row.value}`,\n class: \"row\",\n \"data-testid\": row.dataTestid\n }, [\n _createElementVNode(\"label\", {\n class: \"label text-deemphasized\",\n for: getRowValueId(row)\n }, _toDisplayString(row.label), 9, _hoisted_3),\n (typeof row.valueOverride?.component !== 'string' && row.valueOverride?.component && row.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n id: getRowValueId(row),\n class: \"full-custom-value\"\n }, [\n (row.valueOverride?.component)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(row.valueOverride?.component), _mergeProps({\n key: 0,\n ref_for: true\n }, row.valueOverride?.props, {\n \"data-testid\": row.valueDataTestid\n }), null, 16, [\"data-testid\"]))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_4))\n : (row.valueOverride?.component && row.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n id: getRowValueId(row),\n class: \"value\"\n }, [\n (row.valueOverride?.component)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(row.valueOverride?.component), _mergeProps({\n key: 0,\n ref_for: true\n }, row.valueOverride?.props, {\n \"data-testid\": row.valueDataTestid\n }), null, 16, [\"data-testid\"]))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_5))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n id: getRowValueId(row),\n class: \"value\"\n }, [\n (row.status)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['status', row.status])\n }, null, 2))\n : _createCommentVNode(\"\", true),\n (row.value && row.to)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n to: row.to,\n \"data-testid\": row.valueDataTestid\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(row.value), 1)\n ]),\n _: 2\n }, 1032, [\"to\", \"data-testid\"]))\n : (row.value)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 2,\n \"data-testid\": row.valueDataTestid,\n tabindex: \"0\",\n \"aria-label\": row.value\n }, _toDisplayString(row.value), 9, _hoisted_7))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 3,\n class: \"text-muted\",\n \"data-testid\": row.valueDataTestid\n }, \"—\", 8, _hoisted_8))\n ], 8, _hoisted_6))\n ], 8, _hoisted_2))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n\n\n \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=23333732&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-23333732\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"aria-label\"]\n\nimport { useI18n } from '@shell/composables/useI18n';\nimport { copyTextToClipboard } from '@shell/utils/clipboard';\nimport { ref } from 'vue';\nimport { useStore } from 'vuex';\n\nexport interface Props {\n value: string;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CopyToClipboard',\n props: {\n value: {}\n },\n setup(__props: any) {\n\nconst props = __props;\nconst store = useStore();\nconst i18n = useI18n(store);\nconst copied = ref(false);\nconst timeout = ref>(null);\n\nconst onClick = (ev: MouseEvent) => {\n ev.stopPropagation();\n\n copyTextToClipboard(props.value);\n copied.value = true;\n\n if (timeout.value) {\n return;\n }\n\n timeout.value = setTimeout(() => {\n copied.value = false;\n timeout.value = null;\n }, 2000);\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"copy-to-clipboard\", {copied: copied.value}]),\n \"aria-label\": _unref(i18n).t('component.resource.detail.copyToClipboard.ariaLabel.copy'),\n onClick: onClick\n }, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"i\", { class: \"icon icon-copy\" }, null, -1)\n ]))], 10, _hoisted_1))\n}\n}\n\n})","\n\n \n \n \n \n\n\n","import script from \"./CopyToClipboard.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CopyToClipboard.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CopyToClipboard.vue?vue&type=style&index=0&id=24cd76d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24cd76d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDirective as _resolveDirective, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"content\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = {\n key: 2,\n \"data-testid\": \"detail-top_html\",\n class: /*@__PURE__*/_normalizeClass({'monospace': true})\n}\n\nimport CodeMirror from '@shell/components/CodeMirror.vue';\nimport { _VIEW } from '@shell/config/query-params';\nimport { nlToBr } from '@shell/utils/string';\nimport { computed } from 'vue';\n\nexport interface Props {\n value: string;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Content',\n props: {\n value: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst isEmpty = computed(() => props.value.length === 0);\nconst jsonStr = computed(() => {\n const value = props.value;\n\n if ( value && ( value.startsWith('{') || value.startsWith('[') ) ) {\n try {\n let parsed = JSON.parse(value);\n\n parsed = JSON.stringify(parsed, null, 2);\n\n return parsed;\n } catch {\n }\n }\n\n return null;\n});\n\nconst bodyHtml = computed(() => {\n return nlToBr(props.value);\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_t = _resolveDirective(\"t\")!\n const _directive_clean_html = _resolveDirective(\"clean-html\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (isEmpty.value)\n ? _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_2, null, 512)), [\n [_directive_t, 'detailText.empty']\n ])\n : (jsonStr.value)\n ? (_openBlock(), _createBlock(CodeMirror, {\n key: 1,\n mode: _unref(_VIEW),\n options: {mode:{name:'javascript', json:true}, lineNumbers:false, foldGutter:false},\n value: jsonStr.value\n }, null, 8, [\"mode\", \"value\"]))\n : _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_3, null, 512)), [\n [_directive_clean_html, bodyHtml.value]\n ])\n ]))\n}\n}\n\n})","\n\n \n \n \n \n
\n \n\n\n","import script from \"./Content.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Content.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Content.vue?vue&type=style&index=0&id=8af17bd2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8af17bd2\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, Teleport as _Teleport, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"title\" }\n\nimport CopyToClipboard from '@shell/components/Resource/Detail/CopyToClipboard.vue';\nimport Content from '@shell/components/Resource/Detail/Preview/Content.vue';\nimport { useBasicSetupFocusTrap } from '@shell/composables/focusTrap';\nimport { computed, onMounted, ref } from 'vue';\n\nexport interface Props {\n title: string;\n value: string;\n anchorElement: HTMLElement | null;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n ...{ inheritAttrs: false },\n __name: 'Preview',\n props: {\n title: {},\n value: {},\n anchorElement: {}\n },\n emits: [\"close\"],\n setup(__props: any, { emit: __emit }) {\n\n_useCssVars(_ctx => ({\n \"v068f897a\": (right.value),\n \"v31006f9a\": (top.value)\n}))\n\n\n\nconst props = __props;\nconst emit = __emit;\nconst boundingRect = computed(() => props.anchorElement?.getBoundingClientRect());\nconst top = computed(() => `${ (boundingRect.value?.top || 0) - 28 }px`);\nconst right = computed(() => `${ (document.documentElement.clientWidth - (boundingRect.value?.left || 0)) + 16 }px`);\nconst containerRef = ref(null);\nconst escapePressed = ref(false);\nconst isMouseInteraction = ref(false);\n\nconst onFocusOut = (e: FocusEvent) => {\n // Refocus the container if the user clicks a child element (copy to clipboard)\n if (!escapePressed.value && containerRef.value?.contains(e.relatedTarget as Node)) {\n if (isMouseInteraction.value) {\n containerRef.value.focus();\n }\n } else {\n emit('close', escapePressed.value);\n }\n};\n\nconst onKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n escapePressed.value = true;\n containerRef.value?.blur();\n }\n};\n\nonMounted(() => {\n containerRef.value?.focus();\n});\n\nuseBasicSetupFocusTrap('#focus-trap-preview-container-element');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Teleport, { to: \"#preview\" }, [\n _createElementVNode(\"div\", {\n id: \"focus-trap-preview-container-element\",\n ref_key: \"containerRef\",\n ref: containerRef,\n class: \"preview\",\n tabindex: \"-1\",\n onKeydown: onKeydown,\n onFocusout: onFocusOut,\n onMousedown: _cache[0] || (_cache[0] = ($event: any) => (isMouseInteraction.value=true)),\n onMouseup: _cache[1] || (_cache[1] = ($event: any) => (isMouseInteraction.value=false))\n }, [\n _createElementVNode(\"div\", _hoisted_1, _toDisplayString(props.title), 1),\n _createVNode(Content, {\n class: \"content\",\n value: props.value\n }, null, 8, [\"value\"]),\n _createVNode(CopyToClipboard, {\n class: \"copy-to-clipboard\",\n value: props.value\n }, null, 8, [\"value\"])\n ], 544)\n ]))\n}\n}\n\n})","\n\n \n \n
\n {{ props.title }}\n
\n
\n
\n
\n \n \n\n\n","import script from \"./Preview.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Preview.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Preview.vue?vue&type=style&index=0&id=5b728606&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5b728606\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"tag-data\" }\n\nimport CopyToClipboard from '@shell/components/Resource/Detail/CopyToClipboard.vue';\nimport { Row } from '@shell/components/Resource/Detail/Metadata/KeyValue.vue';\nimport Preview from '@shell/components/Resource/Detail/Preview/Preview.vue';\nimport { nextTick, ref } from 'vue';\nimport RcTag from '@components/Pill/RcTag/RcTag.vue';\nimport RcButton from '@components/RcButton/RcButton.vue';\nimport { Type } from '@components/Pill/types';\nimport { useStore } from 'vuex';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { randomStr } from '@shell/utils/string';\n\nexport interface KeyValueRowProps {\n row: Row;\n type: Type;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'KeyValueRow',\n props: {\n row: {},\n type: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst showPreview = ref(false);\nconst element = ref(null);\nconst button = ref(null);\n\nconst onClose = (keyboardExit: boolean) => {\n showPreview.value = false;\n if (keyboardExit) {\n nextTick(() => {\n button.value?.focus();\n });\n }\n};\nconst previewId = randomStr();\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref_key: \"element\",\n ref: element,\n class: _normalizeClass([\"key-value-row\", {'show-preview': showPreview.value, [props.type]: true}])\n }, [\n _createVNode(RcButton, {\n ref_key: \"button\",\n ref: button,\n variant: \"ghost\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": showPreview.value,\n \"aria-controls\": _unref(previewId),\n \"aria-label\": _unref(i18n).t('component.resource.detail.metadata.keyValue.ariaLabel.showPreview'),\n onClick: _cache[0] || (_cache[0] = () => showPreview.value = true)\n }, {\n default: _withCtx(() => [\n _createVNode(RcTag, {\n type: __props.type,\n highlight: showPreview.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(props.row.key) + \": \" + _toDisplayString(props.row.value), 1)\n ]),\n _: 1\n }, 8, [\"type\", \"highlight\"])\n ]),\n _: 1\n }, 8, [\"aria-expanded\", \"aria-controls\", \"aria-label\"]),\n _createVNode(CopyToClipboard, {\n value: __props.row.value\n }, null, 8, [\"value\"]),\n (showPreview.value)\n ? (_openBlock(), _createBlock(Preview, {\n key: 0,\n id: _unref(previewId),\n class: \"preview\",\n title: __props.row.key,\n value: __props.row.value,\n \"anchor-element\": element.value,\n \"aria-live\": \"polite\",\n onClose: onClose\n }, null, 8, [\"id\", \"title\", \"value\", \"anchor-element\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","\n\n\n \n
showPreview = true\"\n >\n \n {{ props.row.key }}: {{ props.row.value }} \n \n \n
\n
\n
\n \n\n\n","import script from \"./KeyValueRow.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./KeyValueRow.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./KeyValueRow.vue?vue&type=style&index=0&id=18944324&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-18944324\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createVNode as _createVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"key-value\" }\nconst _hoisted_2 = { class: \"heading\" }\nconst _hoisted_3 = { class: \"title text-deemphasized\" }\nconst _hoisted_4 = { class: \"count\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"empty mmt-2 text-deemphasized\"\n}\nconst _hoisted_6 = { class: \"no-rows\" }\nconst _hoisted_7 = { class: \"show-configuration mmt-1\" }\nconst _hoisted_8 = [\"data-testid\"]\nconst _hoisted_9 = [\"data-testid\"]\n\n\nimport { computed, toRefs } from 'vue';\nimport KeyValueRow from '@shell/components/Resource/Detail/Metadata/KeyValueRow.vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { Type } from '@components/Pill/types';\n\nexport type KeyValueType = {[key: string]: string};\n\nexport interface Row {\n key: string;\n value: string;\n}\n\nexport interface KeyValueProps {\n propertyName: string;\n rows: Row[];\n type: Type;\n\n maxRows?: number;\n onShowConfiguration?: (returnFocusSelector: string) => void;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'KeyValue',\n props: {\n propertyName: {},\n rows: {},\n type: {},\n maxRows: { default: 4 },\n onShowConfiguration: { type: Function, default: undefined }\n },\n emits: ['show-configuration'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\nconst { propertyName, rows, maxRows } = toRefs(props);\n\nconst store = useStore();\nconst i18n = useI18n(store);\nconst emit = __emit;\n\n// Account for the show all button\nconst visibleRowsLength = computed(() => (rows.value.length > maxRows.value ? maxRows.value - 1 : rows.value.length));\nconst visibleRows = computed(() => rows.value.slice(0, visibleRowsLength.value));\nconst lowercasePropertyName = computed(() => propertyName.value.toLowerCase());\n\nconst showShowAllButton = computed(() => rows.value.length > maxRows.value);\nconst showAllLabel = computed(() => `Show all ${ lowercasePropertyName.value }`);\n\nconst displayValue = (row: Row) => `${ row.key }: ${ row.value }`;\nconst showConfigurationEmptyDataTestId = computed(() => `empty-show-configuration_${ propertyName.value.replaceAll(' ', '').toLowerCase() }`);\nconst showConfigurationEmptyFocusSelector = computed(() => `[data-testid=\"${ showConfigurationEmptyDataTestId.value }\"]`);\nconst showConfigurationMoreDataTestId = computed(() => `more-show-configuration_${ propertyName.value.replaceAll(' ', '').toLowerCase() }`);\nconst showConfigurationMoreFocusSelector = computed(() => `[data-testid=\"${ showConfigurationMoreDataTestId.value }\"]`);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_unref(propertyName)), 1),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_unref(rows).length), 1)\n ]),\n (visibleRows.value.length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(i18n).t('component.resource.detail.metadata.keyValue.noRows', {propertyName: lowercasePropertyName.value})), 1),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"a\", {\n \"data-testid\": showConfigurationEmptyDataTestId.value,\n class: \"secondary text-deemphasized\",\n href: \"#\",\n onClick: _cache[0] || (_cache[0] = (ev) => {ev.preventDefault(); emit('show-configuration', showConfigurationEmptyFocusSelector.value);})\n }, _toDisplayString(_unref(i18n).t('component.resource.detail.metadata.keyValue.showConfiguration')), 9, _hoisted_8)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(visibleRows.value, (row) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: displayValue(row),\n class: \"row\"\n }, [\n _createVNode(KeyValueRow, {\n class: \"rectangle\",\n type: props.type,\n row: row\n }, null, 8, [\"type\", \"row\"])\n ]))\n }), 128)),\n (showShowAllButton.value)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n \"data-testid\": showConfigurationMoreDataTestId.value,\n href: \"#\",\n class: \"show-all\",\n onClick: _cache[1] || (_cache[1] = (ev) => {ev.preventDefault(); emit('show-configuration', showConfigurationMoreFocusSelector.value);})\n }, _toDisplayString(showAllLabel.value), 9, _hoisted_9))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n \n \n\n\n","import script from \"./KeyValue.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./KeyValue.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./KeyValue.vue?vue&type=style&index=0&id=574d2bc8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-574d2bc8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\n\nimport KeyValue, { Row } from '@shell/components/Resource/Detail/Metadata/KeyValue.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { toRefs } from 'vue';\nimport { useStore } from 'vuex';\n\nexport type Label = Row;\nexport interface LabelsProps {\n labels: Label[];\n\n onShowConfiguration?: (returnFocusSelector: string, defaultTab: string) => void;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n labels: {},\n onShowConfiguration: { type: Function }\n },\n emits: ['show-configuration'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\nconst { labels } = toRefs(props);\nconst emit = __emit;\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(KeyValue, {\n propertyName: _unref(i18n).t('component.resource.detail.metadata.labels.title'),\n rows: _unref(labels),\n type: \"active\",\n onShowConfiguration: _cache[0] || (_cache[0] = (returnFocusSelector) => emit('show-configuration', returnFocusSelector, 'labels-and-annotations'))\n }, null, 8, [\"propertyName\", \"rows\"]))\n}\n}\n\n})","\n\n\n\n\n emit('show-configuration', returnFocusSelector, 'labels-and-annotations')\"\n />\n \n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\n\nimport KeyValue, { Row } from '@shell/components/Resource/Detail/Metadata/KeyValue.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\n\nexport type Annotation = Row;\n\nexport interface AnnotationsProps {\n annotations: Annotation[];\n\n onShowConfiguration?: (returnFocusSelector: string, defaultTab: string) => void;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n annotations: {},\n onShowConfiguration: { type: Function }\n },\n emits: ['show-configuration'],\n setup(__props: any, { emit: __emit }) {\n\n\nconst emit = __emit;\nconst store = useStore();\nconst i18n = useI18n(store);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(KeyValue, {\n propertyName: _unref(i18n).t('component.resource.detail.metadata.annotations.title'),\n rows: __props.annotations,\n type: \"active\",\n onShowConfiguration: _cache[0] || (_cache[0] = (returnFocusSelector) => emit('show-configuration', returnFocusSelector, 'labels-and-annotations'))\n }, null, 8, [\"propertyName\", \"rows\"]))\n}\n}\n\n})","\n\n\n\n\n emit('show-configuration', returnFocusSelector, 'labels-and-annotations')\"\n />\n \n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n \n \n
\n \n\n\n","import { render } from \"./SpacedRow.vue?vue&type=template&id=be2be6f0&scoped=true\"\nconst script = {}\n\nimport \"./SpacedRow.vue?vue&type=style&index=0&id=be2be6f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-be2be6f0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, withCtx as _withCtx, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"identifying-info\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"labels-and-annotations-empty\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"labels\"\n}\nconst _hoisted_4 = {\n key: 2,\n class: \"annotations\"\n}\n\nimport IdentifyingInformation, { Row as IdentifyingInformationRow } from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue';\nimport Labels, { Label } from '@shell/components/Resource/Detail/Metadata/Labels/index.vue';\nimport Annotations, { Annotation } from '@shell/components/Resource/Detail/Metadata/Annotations/index.vue';\nimport SpacedRow from '@shell/components/Resource/Detail/SpacedRow.vue';\nimport KeyValue from '@shell/components/Resource/Detail/Metadata/KeyValue.vue';\nimport { computed } from 'vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\nimport { ExtensionPoint, PanelLocation } from '@shell/core/types';\nimport ExtensionPanel from '@shell/components/ExtensionPanel.vue';\n\nexport interface MetadataProps {\n resource: any;\n identifyingInformation: IdentifyingInformationRow[],\n labels: Label[],\n annotations: Annotation[],\n onShowConfiguration?: (returnFocusSelector: string) => void;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n resource: {},\n identifyingInformation: {},\n labels: {},\n annotations: {},\n onShowConfiguration: { type: Function }\n },\n emits: ['show-configuration'],\n setup(__props: any, { emit: __emit }) {\n\n\nconst emit = __emit;\n\nconst store = useStore();\nconst i18n = useI18n(store);\n\nconst showBothEmpty = computed(() => __props.labels.length === 0 && __props.annotations.length === 0);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(SpacedRow, _mergeProps({ class: \"metadata\" }, _ctx.$attrs), {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(IdentifyingInformation, { rows: __props.identifyingInformation }, null, 8, [\"rows\"])\n ]),\n (showBothEmpty.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(KeyValue, {\n type: \"active\",\n rows: [],\n propertyName: _unref(i18n).t('component.resource.detail.metadata.labelsAndAnnotations'),\n onShowConfiguration: _cache[0] || (_cache[0] = (returnFocusSelector, defaultTab) => emit('show-configuration', returnFocusSelector, defaultTab))\n }, null, 8, [\"propertyName\"])\n ]))\n : _createCommentVNode(\"\", true),\n (!showBothEmpty.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(Labels, {\n labels: __props.labels,\n onShowConfiguration: _cache[1] || (_cache[1] = (returnFocusSelector, defaultTab) => emit('show-configuration', returnFocusSelector, defaultTab))\n }, null, 8, [\"labels\"])\n ]))\n : _createCommentVNode(\"\", true),\n (!showBothEmpty.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(Annotations, {\n annotations: __props.annotations,\n onShowConfiguration: _cache[2] || (_cache[2] = (returnFocusSelector, defaultTab) => emit('show-configuration', returnFocusSelector, defaultTab))\n }, null, 8, [\"annotations\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 16),\n _createVNode(ExtensionPanel, {\n class: \"ppb-3\",\n resource: __props.resource,\n type: _unref(ExtensionPoint).PANEL,\n location: _unref(PanelLocation).DETAIL_TOP\n }, null, 8, [\"resource\", \"type\", \"location\"])\n ], 64))\n}\n}\n\n})","\n\n\n \n \n \n
\n \n \n emit('show-configuration', returnFocusSelector, defaultTab)\"\n />\n
\n \n \n emit('show-configuration', returnFocusSelector, defaultTab)\"\n />\n
\n \n
emit('show-configuration', returnFocusSelector, defaultTab)\"\n />\n \n \n \n \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1070d512&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1070d512\"]])\n\nexport default __exports__","import script from \"./Additional.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Additional.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Additional.vue?vue&type=style&index=0&id=53ecaf14&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53ecaf14\"]])\n\nexport default __exports__","import { useI18n } from '@shell/composables/useI18n';\nimport {\n computed, ComputedRef, defineAsyncComponent, markRaw, toValue\n} from 'vue';\nimport Additional from '@shell/components/Resource/Detail/Additional.vue';\nimport { useStore } from 'vuex';\nimport {\n NAMESPACE, FLEET, SERVICE_ACCOUNT, SECRET, CAPI,\n MANAGEMENT\n} from '@shell/config/types';\nimport { Row } from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue';\nimport { NAME as FLEET_NAME } from '@shell/config/product/fleet';\nimport { useRoute } from 'vue-router';\nimport { TYPES as SECRET_TYPES } from '@shell/models/secret';\nimport { KUBERNETES } from '@shell/config/labels-annotations';\n\nexport const useNamespace = (resource: any): ComputedRef | undefined => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n\n if (!resourceValue.namespace || resourceValue.namespaces || resourceValue.isProjectScoped) {\n return;\n }\n\n return computed(() => {\n const currentStore = store.getters['currentStore'](NAMESPACE);\n const canList = store.getters[`${ currentStore }/canList`](NAMESPACE);\n\n const label = i18n.t('component.resource.detail.metadata.identifyingInformation.namespace');\n const value = resourceValue.namespace;\n const valueDataTestid = 'masthead-subheader-namespace';\n const valueOverride = canList ? {\n component: markRaw(defineAsyncComponent(() => import('@shell/components/Resource/Detail/ResourcePopover/index.vue'))),\n props: {\n type: NAMESPACE,\n id: resourceValue.namespace,\n detailLocation: resourceValue.namespaceLocation\n }\n } : undefined;\n\n return {\n label,\n value,\n valueDataTestid,\n valueOverride,\n };\n });\n};\n\nexport const useWorkspace = (resource: any): ComputedRef | undefined => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n const route = useRoute();\n\n const isWorkspace = store.getters['productId'] === FLEET_NAME && !!resourceValue?.metadata?.namespace;\n\n if (!isWorkspace) {\n return;\n }\n\n return computed(() => ({\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.workspace'),\n value: resourceValue.namespace,\n to: {\n name: `c-cluster-product-resource-id`,\n params: {\n product: store.getters['productId'],\n cluster: store.getters['clusterId'],\n resource: FLEET.WORKSPACE,\n id: route.params.namespace\n }\n }\n }));\n};\n\nexport const useLiveDate = (resource: any): ComputedRef | undefined => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n\n const options = store.getters[`type-map/optionsFor`](resource.type);\n\n if (!options.showAge) {\n return;\n }\n\n return computed(() => ({\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.age'),\n valueOverride: {\n component: 'LiveDate',\n props: { value: resourceValue.creationTimestamp }\n },\n value: resourceValue.creationTimestamp,\n }));\n};\n\nexport const useProject = (resource: any): ComputedRef | undefined => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n\n // Only show project if one of these types\n if (resource.type !== NAMESPACE && resource.type !== SECRET) {\n return;\n }\n\n if (!resourceValue.project) {\n return;\n }\n\n return computed(() => {\n return {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.project'),\n value: resourceValue.project?.nameDisplay,\n valueDataTestid: 'masthead-subheader-project',\n valueOverride: {\n component: markRaw(defineAsyncComponent(() => import('@shell/components/Resource/Detail/ResourcePopover/index.vue'))),\n props: {\n type: MANAGEMENT.PROJECT,\n id: resourceValue.project?.id,\n currentStore: 'management'\n }\n }\n };\n });\n};\n\nexport const useSecretCluster = (resource: any): ComputedRef | undefined => {\n const store = useStore();\n const resourceValue = toValue(resource);\n\n return computed(() => {\n return {\n label: store.getters['type-map/labelFor']({ id: CAPI.RANCHER_CLUSTER }),\n value: resourceValue.projectCluster?.nameDisplay,\n };\n });\n};\n\nexport const useResourceDetails = (resource: any): undefined | ComputedRef => {\n const details = computed(() => resource.details);\n\n if (!details.value) {\n return;\n }\n\n const extractValueOverride = (detail: any) => {\n if (detail.valueOverride) {\n return detail.valueOverride;\n }\n\n if (!detail.formatter) {\n return;\n }\n\n return {\n component: detail.formatter,\n props: {\n value: detail.content,\n ...detail.formatterOpts\n }\n };\n };\n\n return computed(() => {\n return details.value\n .filter((detail: any) => !detail.separator && detail.content !== undefined && detail.content !== null)\n .map((detail: any) => {\n return {\n label: detail.label,\n value: detail.content,\n valueOverride: extractValueOverride(detail)\n };\n });\n });\n};\n\nexport const useImage = (resource: any): ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n\n return computed(() => ({\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.image'),\n value: resourceValue.imageNames,\n valueOverride: {\n component: markRaw(Additional),\n props: { items: resourceValue.imageNames }\n },\n }));\n};\n\nexport const useReady = (resource: any): ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n const resourceValue = toValue(resource);\n\n return computed(() => ({\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.ready'),\n value: resourceValue.ready,\n }));\n};\n\nexport const useSecretType = (resource: any): ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n\n const resourceValue = toValue(resource);\n\n return computed(() => {\n return {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.type'),\n value: resourceValue.typeDisplay,\n };\n });\n};\n\nexport const useServiceAccount = (resource: any): undefined | ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n\n const resourceValue = toValue(resource);\n\n if (resourceValue._type !== SECRET_TYPES.SERVICE_ACCT) {\n return;\n }\n\n const serviceAccountName = resourceValue.metadata?.annotations?.[KUBERNETES.SERVICE_ACCOUNT_NAME];\n\n if (!serviceAccountName) {\n return;\n }\n\n return computed(() => {\n return {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.serviceAccount'),\n value: serviceAccountName,\n to: {\n name: `c-cluster-product-resource-namespace-id`,\n params: {\n product: store.getters['productId'],\n cluster: store.getters['clusterId'],\n namespace: resource.namespace,\n resource: SERVICE_ACCOUNT,\n id: serviceAccountName\n }\n }\n };\n });\n};\n\nexport const useCertificate = (resource: any): undefined | ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n\n const resourceValue = toValue(resource);\n\n if (!resourceValue.cn) {\n return;\n }\n\n const certificate = resourceValue.plusMoreNames ? `${ resourceValue.cn } ${ i18n.t('secret.certificate.plusMore', { n: resourceValue.plusMoreNames }) }` : resourceValue.cn;\n\n return computed(() => {\n return {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.certificate'),\n value: certificate,\n };\n });\n};\n\nexport const useIssuer = (resource: any): undefined | ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n\n const resourceValue = toValue(resource);\n\n if (!resourceValue.issuer) {\n return;\n }\n\n return computed(() => {\n return {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.issuer'),\n value: resourceValue.issuer,\n };\n });\n};\n\nexport const useExpires = (resource: any): undefined | ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n\n const resourceValue = toValue(resource);\n\n if (!resourceValue.notAfter) {\n return;\n }\n\n return computed(() => {\n return {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.expires'),\n valueOverride: {\n component: markRaw(Date),\n props: {\n value: resourceValue.notAfter,\n class: resourceValue.dateClass\n }\n },\n value: resourceValue.notAfter,\n };\n });\n};\n","import { computed, ComputedRef, toValue } from 'vue';\nimport { Row } from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue';\nimport {\n useCertificate,\n useExpires,\n useImage, useIssuer, useLiveDate, useNamespace, useProject, useReady, useSecretCluster, useSecretType,\n useServiceAccount\n} from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields';\nimport { useStore } from 'vuex';\nimport { useI18n } from '@shell/composables/useI18n';\n\nexport const useDefaultIdentifyingInformation = (resource: any): ComputedRef => {\n const namespace = useNamespace(resource);\n const liveDate = useLiveDate(resource);\n\n return computed(() => {\n return [\n namespace?.value,\n liveDate?.value\n ].filter((info) => typeof info !== 'undefined');\n });\n};\n\nexport const useSecretIdentifyingInformation = (resource: any, isProjectSecret: boolean): ComputedRef => {\n const namespace = isProjectSecret ? undefined : useNamespace(resource);\n const project = isProjectSecret ? useProject(resource) : undefined;\n const cluster = isProjectSecret ? useSecretCluster(resource) : undefined;\n const age = useLiveDate(resource);\n const secretType = useSecretType(resource);\n const serviceAccount = useServiceAccount(resource);\n const certificate = useCertificate(resource);\n const issuer = useIssuer(resource);\n const expires = useExpires(resource);\n\n return computed(() => {\n const rows = [\n age?.value,\n namespace?.value,\n project?.value,\n cluster?.value,\n secretType?.value,\n serviceAccount?.value,\n certificate?.value,\n issuer?.value,\n expires?.value,\n ];\n\n return rows.filter((r) => typeof r !== 'undefined');\n });\n};\n\nexport const useDefaultWorkloadIdentifyingInformation = (resource: any): ComputedRef => {\n const store = useStore();\n const i18n = useI18n(store);\n\n const resourceValue = toValue(resource);\n const image = useImage(resource);\n const ready = useReady(resource);\n\n return computed(() => [\n image.value,\n ready.value,\n {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.up-to-date'),\n value: resourceValue.upToDate,\n },\n {\n label: i18n.t('component.resource.detail.metadata.identifyingInformation.available'),\n value: resourceValue.available,\n },\n ]);\n};\n","import { Label } from '@shell/components/Resource/Detail/Metadata/Labels/index.vue';\nimport { computed, Ref, toValue } from 'vue';\n\nexport const useDefaultLabels = (resource: any): Ref => {\n const resourceValue = toValue(resource);\n\n return computed(() => {\n const entries = Object.entries(resourceValue.labels || {});\n\n return entries.map(([key, value]) => ({ key, value }));\n });\n};\n","import { Annotation } from '@shell/components/Resource/Detail/Metadata/Annotations/index.vue';\nimport { computed, Ref, toValue } from 'vue';\n\nexport const useDefaultAnnotations = (resource: any): Ref => {\n const resourceValue = toValue(resource);\n\n return computed(() => {\n const keyValuePairs = Object.entries(resourceValue.annotations || {});\n\n return keyValuePairs.map(([key, value]) => ({ key, value }));\n });\n};\n","import { Row as IdentifyingInformationRow } from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue';\nimport { useDefaultIdentifyingInformation } from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/composable';\nimport { useDefaultLabels } from '@shell/components/Resource/Detail/Metadata/Labels/composable';\nimport { useDefaultAnnotations } from '@shell/components/Resource/Detail/Metadata/Annotations/composable';\nimport { computed, toValue, Ref } from 'vue';\nimport {\n useLiveDate, useNamespace, useProject, useResourceDetails, useWorkspace\n} from '@shell/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields';\nimport { useOnShowConfiguration } from '@shell/components/Resource/Detail/composables';\n\nexport const useBasicMetadata = (resource: any) => {\n const labels = useDefaultLabels(resource);\n const annotations = useDefaultAnnotations(resource);\n const onShowConfiguration = useOnShowConfiguration(resource);\n\n return computed(() => {\n return {\n resource: toValue(resource),\n labels: labels.value,\n annotations: annotations.value,\n onShowConfiguration\n };\n });\n};\n\nexport const useDefaultMetadataProps = (resource: any, additionalIdentifyingInformation?: (IdentifyingInformationRow[] | Ref)) => {\n const defaultIdentifyingInformation = useDefaultIdentifyingInformation(resource);\n const additionalIdentifyingInformationValue = toValue(additionalIdentifyingInformation);\n\n const identifyingInformation = computed(() => [...defaultIdentifyingInformation.value, ...(additionalIdentifyingInformationValue || [])]);\n const basicMetaData = useBasicMetadata(resource);\n const onShowConfiguration = useOnShowConfiguration(resource);\n\n return computed(() => {\n return {\n resource: toValue(resource),\n identifyingInformation: identifyingInformation.value,\n labels: basicMetaData.value.labels,\n annotations: basicMetaData.value.annotations,\n onShowConfiguration\n };\n });\n};\n\nexport const useDefaultMetadataForLegacyPagesProps = (resource: any) => {\n const resourceDetails = useResourceDetails(resource);\n const project = useProject(resource);\n const workspace = useWorkspace(resource);\n const namespace = useNamespace(resource);\n const liveDate = useLiveDate(resource);\n\n const identifyingInformation = computed((): IdentifyingInformationRow[] => {\n const defaultInfo = [\n project?.value,\n workspace?.value,\n namespace?.value,\n liveDate?.value,\n ];\n const info = [\n ...defaultInfo,\n ...(resourceDetails?.value || [])\n ];\n\n return info.filter((info) => typeof info !== 'undefined');\n });\n const basicMetaData = useBasicMetadata(resource);\n\n return computed(() => {\n return {\n resource: toValue(resource),\n identifyingInformation: identifyingInformation.value,\n labels: basicMetaData.value.labels,\n annotations: basicMetaData.value.annotations,\n onShowConfiguration: basicMetaData.value.onShowConfiguration\n };\n });\n};\n","\n","import script from \"./RichTranslation.vue?vue&type=script&lang=ts\"\nexport * from \"./RichTranslation.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"message text-deemphasized\" }\n\nimport RichTranslation from '@shell/components/RichTranslation.vue';\nimport { computed } from 'vue';\n\n\nimport Card from '@shell/components/Resource/Detail/Card/index.vue';\nimport { useI18n } from '@shell/composables/useI18n';\nimport { useStore } from 'vuex';\nimport { BLANK_CLUSTER } from '@shell/store/store-types';\nimport { isAdminUser } from '@shell/store/type-map';\nimport { DOCS_BASE } from '@shell/config/private-label';\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ExtrasCard',\n setup(__props) {\n\nconst store = useStore();\nconst i18n = useI18n(store);\nconst isAdmin = computed(() => isAdminUser(store.getters));\n\nconst extensionsRoute = { name: 'c-cluster-uiplugins', params: { cluster: BLANK_CLUSTER } };\nconst extensionsDocsUrl = `${ DOCS_BASE }/integrations-in-rancher/rancher-extensions`;\n\nconst clusterToolsRoute = { name: 'c-cluster-explorer-tools' };\nconst clusterToolsDocsUrl = `${ DOCS_BASE }/reference-guides/rancher-cluster-tools`;\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createBlock(Card, {\n title: _unref(i18n).t('component.resource.detail.card.extrasCard.title')\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", _hoisted_1, [\n _createVNode(RichTranslation, { k: \"component.resource.detail.card.extrasCard.message\" }, {\n extensionsLink: _withCtx(({ content }) => [\n (isAdmin.value)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"secondary text-deemphasized\",\n to: extensionsRoute\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(content), 1)\n ]),\n _: 2\n }, 1024))\n : (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n class: \"secondary text-deemphasized\",\n href: extensionsDocsUrl,\n target: \"_blank\"\n }, _toDisplayString(content), 1))\n ]),\n clusterToolsLink: _withCtx(({ content }) => [\n (isAdmin.value)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"secondary-text-link\",\n to: clusterToolsRoute\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(content), 1)\n ]),\n _: 2\n }, 1024))\n : (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n class: \"secondary-text-link\",\n href: clusterToolsDocsUrl,\n target: \"_blank\"\n }, _toDisplayString(content), 1))\n ]),\n _: 1\n })\n ])\n ]),\n _: 1\n }, 8, [\"title\"]))\n}\n}\n\n})","\n\n\n\n \n \n \n \n \n {{ content }}\n \n \n {{ content }}\n \n \n \n \n {{ content }}\n \n \n {{ content }}\n \n \n \n
\n \n \n\n\n","import script from \"./ExtrasCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ExtrasCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ExtrasCard.vue?vue&type=style&index=0&id=3eb6f915&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3eb6f915\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from \"vue\"\n\n\nimport SpacedRow from '@shell/components/Resource/Detail/SpacedRow.vue';\nimport ExtrasCard from '@shell/components/Resource/Detail/Card/ExtrasCard.vue';\nimport { computed } from 'vue';\n\nexport interface Props {\n resource: any;\n}\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Cards',\n props: {\n resource: {}\n },\n setup(__props: any) {\n\n\nconst cards = computed(() => __props.resource?.cards?.filter((c: any) => c) || []);\nconst showExtrasCard = computed(() => cards.value.length >= 1 && cards.value.length < 3);\n\nreturn (_ctx: any,_cache: any) => {\n return (cards.value.length > 0)\n ? (_openBlock(), _createBlock(SpacedRow, { key: 0 }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(cards.value, (card, i) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(card.component), _mergeProps({ key: i }, { ref_for: true }, card.props), null, 16))\n }), 128)),\n (showExtrasCard.value)\n ? (_openBlock(), _createBlock(ExtrasCard, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n\n 0\">\n \n \n \n \n","import script from \"./Cards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Cards.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { useStore } from 'vuex';\n\n\n/* eslint-disable */\nimport { Banner } from '@components/Banner';\nimport TitleBar from '@shell/components/Resource/Detail/TitleBar/index.vue';\nimport { useDefaultTitleBarProps } from '@shell/components/Resource/Detail/TitleBar/composables';\nimport Metadata from '@shell/components/Resource/Detail/Metadata/index.vue';\nimport { useDefaultMetadataForLegacyPagesProps } from '@shell/components/Resource/Detail/Metadata/composables';\nimport { useResourceDetailBannerProps } from '@shell/components/Resource/Detail/composables';\nimport { computed } from 'vue';\nimport Cards from '@shell/components/Resource/Detail/Cards.vue';\n\n// We are disabling eslint for this script to allow the use of the Props interface\nexport interface Props {\n value?: Object;\n resourceSubtype?: string;\n isCustomDetailOrEdit?: boolean;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'latest',\n props: {\n value: { default: () => ({}) },\n resourceSubtype: { default: undefined },\n isCustomDetailOrEdit: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props;\n\nconst uiCtxResource = computed(() => {\n const {\n name, metadata, kind, state\n } = (props.value || {}) as any;\n\n return {\n name,\n namespace: metadata?.namespace,\n kind,\n state,\n };\n});\nconst resourceSubtype = computed(() => props.resourceSubtype);\nconst titleBarProps = useDefaultTitleBarProps(props.value, resourceSubtype);\nconst metadataProps = useDefaultMetadataForLegacyPagesProps(props.value);\nconst bannerProps = useResourceDetailBannerProps(props.value);\n\nconst store = useStore();\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_ui_context = _resolveDirective(\"ui-context\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(TitleBar, _normalizeProps(_guardReactiveProps(_unref(titleBarProps))), null, 16),\n (_unref(bannerProps))\n ? _withDirectives((_openBlock(), _createBlock(_unref(Banner), _mergeProps({\n key: 0,\n class: \"new state-banner\"\n }, _unref(bannerProps)), null, 16)), [\n [_directive_ui_context, {\n store: _unref(store),\n icon: 'icon-info',\n hookable: true,\n value: {\n bannerProps: _unref(bannerProps),\n resource: uiCtxResource.value\n },\n tag: '__details-state-banner',\n description: 'Status Message'\n }]\n ])\n : _createCommentVNode(\"\", true),\n _createVNode(Metadata, _mergeProps(_unref(metadataProps), { class: \"metadata-section\" }), null, 16),\n (props.isCustomDetailOrEdit)\n ? (_openBlock(), _createBlock(Cards, {\n key: 1,\n class: \"cards-section\",\n resource: props.value\n }, null, 8, [\"resource\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n \n \n \n \n \n
\n \n\n\n","import script from \"./latest.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./latest.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./latest.vue?vue&type=style&index=0&id=0243210c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0243210c\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./legacy.vue?vue&type=template&id=0f75302f&scoped=true\"\nimport script from \"./legacy.vue?vue&type=script&lang=js\"\nexport * from \"./legacy.vue?vue&type=script&lang=js\"\n\nimport \"./legacy.vue?vue&type=style&index=0&id=0f75302f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f75302f\"]])\n\nexport default __exports__","import { useRoute } from 'vue-router';\nimport { LEGACY } from '@shell/config/query-params';\nimport { computed } from 'vue';\nimport { getVersionInfo } from '@shell/utils/version';\nimport semver from 'semver';\nimport { useStore } from 'vuex';\n\nconst enabledByDefault = true;\n\nexport const useIsNewDetailPageEnabled = () => {\n const route = useRoute();\n\n return computed(() => {\n const store = useStore();\n const { fullVersion } = getVersionInfo(store);\n\n const coerced = semver.coerce(fullVersion) || { version: '0.0.0' };\n\n if (!semver.gte(coerced.version, '2.12.0')) {\n return false;\n }\n\n if (enabledByDefault) {\n return route?.query?.[LEGACY] !== 'true';\n }\n\n return route?.query?.[LEGACY] === 'false';\n });\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, withCtx as _withCtx, mergeProps as _mergeProps } from \"vue\"\n\n\nimport { _VIEW, _YAML } from '@shell/config/query-params';\nimport Latest from '@shell/components/ResourceDetail/Masthead/latest.vue';\nimport Legacy from '@shell/components/ResourceDetail/Masthead/legacy.vue';\nimport { useIsNewDetailPageEnabled } from '@shell/composables/useIsNewDetailPageEnabled';\nimport { computed } from 'vue';\n\nexport interface Props {\n value?: Object;\n mode?: string;\n realMode?: string;\n as?: string;\n hasGraph?: boolean;\n hasDetail?: boolean;\n hasEdit?: boolean;\n storeOverride?: string;\n resource?: string;\n resourceSubtype?: string;\n parentRouteOverride?: string;\n canViewYaml?: boolean;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n value: { default: () => ({}) },\n mode: { default: 'create' },\n realMode: { default: 'create' },\n as: { default: _YAML },\n hasGraph: { type: Boolean, default: false },\n hasDetail: { type: Boolean, default: false },\n hasEdit: { type: Boolean, default: false },\n storeOverride: { default: undefined },\n resource: { default: undefined },\n resourceSubtype: { default: undefined },\n parentRouteOverride: { default: undefined },\n canViewYaml: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\n\nconst props = __props;\n\nconst isNewDetailPageEnabled = useIsNewDetailPageEnabled();\nconst isView = computed(() => props.mode === _VIEW);\nconst showLatestMasthead = computed(() => isNewDetailPageEnabled.value && isView.value );\n\nreturn (_ctx: any,_cache: any) => {\n return (showLatestMasthead.value)\n ? (_openBlock(), _createBlock(Latest, {\n key: 0,\n value: props.value,\n resourceSubtype: props.resourceSubtype,\n isCustomDetailOrEdit: props.hasDetail || props.hasEdit\n }, null, 8, [\"value\", \"resourceSubtype\", \"isCustomDetailOrEdit\"]))\n : (_openBlock(), _createBlock(Legacy, _normalizeProps(_mergeProps({ key: 1 }, props)), {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16))\n}\n}\n\n})","\n\n\n\n \n \n \n \n \n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7f6314f2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7f6314f2\"]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ t('resourceDetail.detailTop.namespaces') }}:\n \n \n \n {{ namespace.name }}\n \n \n
\n\n
\n \n {{ t('resourceDetail.detailTop.description') }}:\n \n {{ description }} \n
\n\n
\n
\n
\n \n {{ detail.label }}:\n \n \n {{ detail.content }} \n
\n
\n
\n\n
\n\n
\n\n \n
\n
\n \n\n\n","import { render } from \"./DetailTop.vue?vue&type=template&id=50af44aa\"\nimport script from \"./DetailTop.vue?vue&type=script&lang=js\"\nexport * from \"./DetailTop.vue?vue&type=script&lang=js\"\n\nimport \"./DetailTop.vue?vue&type=style&index=0&id=50af44aa&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=64dc1332&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=64dc1332&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-64dc1332\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","\n\n\n \n \n\n\n","import { render } from \"./Favorite.vue?vue&type=template&id=bc643bc4&scoped=true\"\nimport script from \"./Favorite.vue?vue&type=script&lang=js\"\nexport * from \"./Favorite.vue?vue&type=script&lang=js\"\n\nimport \"./Favorite.vue?vue&type=style&index=0&id=bc643bc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bc643bc4\"]])\n\nexport default __exports__","import { render } from \"./Masthead.vue?vue&type=template&id=7dd81672&scoped=true\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js\"\n\nimport \"./Masthead.vue?vue&type=style&index=0&id=7dd81672&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7dd81672\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n {{ t( 'resourceLoadingIndicator.loading' ) }} {{ count }} / {{ total }} \n
\n
\n
\n
\n {{ t( 'resourceLoadingIndicator.loading' ) }} {{ count }} / {{ total }} \n
\n
\n
\n
\n \n\n\n","import { render } from \"./ResourceLoadingIndicator.vue?vue&type=template&id=6457c305&scoped=true\"\nimport script from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js\"\nexport * from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js\"\n\nimport \"./ResourceLoadingIndicator.vue?vue&type=style&index=0&id=6457c305&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6457c305\"]])\n\nexport default __exports__","\n\n\n \n \n {{ t('resourceList.nsFiltering') }}\n \n \n \n \n {{ t('resourceList.nsFilteringGeneric') }}\n \n \n \n
\n \n \n \n \n \n
\n\n
\n \n
\n
\n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=377cbd78&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=377cbd78&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-377cbd78\"]])\n\nexport default __exports__","\n\n\n \n 1\"\n #header-middle\n >\n \n\n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n ({{ namespaceCounts[thisGroup.rows?.[0]?.metadata?.namespace]?.count }})\n \n
\n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n","import { STEVE_WATCH_MODE } from '@shell/types/store/subscribe.types';\n\n// This is functionality used to stop or start sockets used to watch resources in the vai world.\n// Currently disabled via (non-public) perf setting\n// See https://github.com/rancher/dashboard/issues/14359 for long term plan\n\nexport default {\n props: {\n schema: {\n type: Object,\n default: null,\n },\n },\n\n data() {\n // Note - does not cover anything fetched by secondary / page functions\n const watchOpts = this.schema?.id ? {\n type: this.schema.id,\n mode: STEVE_WATCH_MODE.RESOURCE_CHANGES\n // Note - we don't restrict watch by namespace (would involve unwatch, request, watch with new revision on every change to ns filter)\n } : undefined;\n\n return { watchOpts };\n },\n\n computed: {\n watching() {\n return this.$store.getters[`${ this.inStore }/watchStarted`](this.watchOpts);\n },\n },\n\n methods: {\n toggleWatch(toggle) {\n if (toggle) {\n // Assume there's a gap between cache and reality, to restart watch with something that will make a new http request to refresh it\n this.$store.dispatch(`${ this.inStore }/resyncWatch`, {\n ...this.watchOpts,\n resourceType: this.watchOpts?.type\n });\n } else {\n this.$store.dispatch(`${ this.inStore }/unwatch`, this.watchOpts);\n }\n }\n }\n};\n","import { render } from \"./ResourceTable.vue?vue&type=template&id=130977a6&scoped=true\"\nimport script from \"./ResourceTable.vue?vue&type=script&lang=js\"\nexport * from \"./ResourceTable.vue?vue&type=script&lang=js\"\n\nimport \"./ResourceTable.vue?vue&type=style&index=0&id=130977a6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-130977a6\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n
\n \n\n\n\n\n","import { render } from \"./ResourceYaml.vue?vue&type=template&id=36fcbdfe&scoped=true\"\nimport script from \"./ResourceYaml.vue?vue&type=script&lang=js\"\nexport * from \"./ResourceYaml.vue?vue&type=script&lang=js\"\n\nimport \"./ResourceYaml.vue?vue&type=style&index=0&id=36fcbdfe&lang=scss&scoped=true\"\nimport \"./ResourceYaml.vue?vue&type=style&index=1&id=36fcbdfe&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-36fcbdfe\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n {{ title }}\n \n \n
\n \n
\n
\n
\n \n
\n
\n \n\n\n","import { render } from \"./SimpleBox.vue?vue&type=template&id=48821e48&scoped=true\"\nimport script from \"./SimpleBox.vue?vue&type=script&lang=js\"\nexport * from \"./SimpleBox.vue?vue&type=script&lang=js\"\n\nimport \"./SimpleBox.vue?vue&type=style&index=0&id=48821e48&lang=scss&scoped=true\"\nimport \"./SimpleBox.vue?vue&type=style&index=1&id=48821e48&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-48821e48\"]])\n\nexport default __exports__","\n\n\n \n \n
\n $emit('group-value-change', val)\"\n @update-cols-options=\"updateColsOptions\"\n />\n\n \n
\n\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ groupedRows.ref }}\n
\n \n \n \n \n \n \n \n \n \n \n {{ row.mainRowKey }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ col.formatted }}\n \n \n — \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ row.row.stateDescription }}\n \n \n \n \n \n
\n
\n \n \n \n \n \n \n \n {{ pagingDisplay }}\n \n \n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n \n\n\n\n\n","\n\n \n \n\n\n","import { render } from \"./ActionDropdown.vue?vue&type=template&id=2829f66d\"\nimport script from \"./ActionDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./ActionDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./ActionDropdown.vue?vue&type=style&index=0&id=2829f66d&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n
\n {{ t('sortableTable.tableHeader.groupBy') }}: \n \n
\n
\n {{ t('sortableTable.tableHeader.show') }}:\n
\n
\n
\n
\n \n \n \n \n \n\n \n \n","export function getParent(el, parentSelector) {\n el = el?.parentElement;\n\n if (!el) {\n return null;\n }\n\n const matchFn = el.matches || el.matchesSelector;\n\n if (!matchFn.call(el, parentSelector)) {\n return getParent(el, parentSelector);\n }\n\n return el;\n}\n","import { mapGetters } from 'vuex';\nimport { isMore, isRange, suppressContextMenu, isAlternate } from '@shell/utils/platform';\nimport { get } from '@shell/utils/object';\nimport { filterBy } from '@shell/utils/array';\nimport { getParent } from '@shell/utils/dom';\n\nexport const ALL = 'all';\nexport const SOME = 'some';\nexport const NONE = 'none';\n\nexport default {\n mounted() {\n const table = this.$el.querySelector('TABLE');\n\n this._onRowClickBound = this.onRowClick.bind(this);\n this._onRowMousedownBound = this.onRowMousedown.bind(this);\n this._onRowContextBound = this.onRowContext.bind(this);\n\n table.addEventListener('click', this._onRowClickBound);\n table.addEventListener('mousedown', this._onRowMousedownBound);\n table.addEventListener('contextmenu', this._onRowContextBound);\n },\n\n beforeUnmount() {\n const table = this.$el.querySelector('TABLE');\n\n table.removeEventListener('click', this._onRowClickBound);\n table.removeEventListener('mousedown', this._onRowMousedownBound);\n table.removeEventListener('contextmenu', this._onRowContextBound);\n },\n\n computed: {\n ...mapGetters({\n // Use either these Vuex getters\n // OR the props to set the action menu state,\n // but don't use both.\n targetElem: 'action-menu/elem',\n shouldShow: 'action-menu/showing',\n }),\n // Used for the table-level selection check-box to show checked (all selected)/intermediate (some selected)/unchecked (none selected)\n howMuchSelected() {\n const total = this.pagedRows.length;\n const selected = this.selectedRows.length;\n\n if ( selected >= total && total > 0 ) {\n return ALL;\n } else if ( selected > 0 ) {\n return SOME;\n }\n\n return NONE;\n },\n\n // NOTE: The logic here could be simplified and made more performant\n bulkActionsForSelection() {\n let disableAll = false;\n\n // pagedRows is all rows in the current page\n const all = this.pagedRows;\n const allRows = this.arrangedRows || all;\n let selected = this.selectedRows;\n\n // Nothing is selected\n if ( !this.selectedRows.length ) {\n // and there are no rows\n if ( !allRows ) {\n return [];\n }\n\n const firstNode = allRows[0];\n\n selected = firstNode ? [firstNode] : [];\n disableAll = true;\n }\n\n const map = {};\n\n // Find and add all the actions for all the nodes so that we know\n // what all the possible actions are\n for ( const node of all ) {\n if (node.availableActions) {\n for ( const act of node.availableActions ) {\n if ( act.bulkable ) {\n _add(map, act, false);\n }\n }\n }\n }\n\n // Go through all the selected items and add the actions (which were already identified above)\n // as available for some (or all) of the selected nodes\n for ( const node of selected ) {\n if (node.availableActions) {\n for ( const act of node.availableActions ) {\n if ( act.bulkable && act.enabled ) {\n _add(map, act, false);\n }\n }\n }\n }\n\n // If there's no items actually selected, we want to see all the actions\n // so you know what exists, but have them all be disabled since there's nothing to do them on.\n const out = _filter(map, disableAll);\n\n // Enable a bulkaction if some of the selected items can perform the action\n out.forEach((bulkAction) => {\n const actionEnabledForSomeSelected = this.selectedRows.some((node) => {\n const availableActions = node.availableActions || [];\n\n return availableActions.some((action) => action.action === bulkAction.action && action.enabled);\n });\n\n bulkAction.enabled = this.selectedRows.length > 0 && actionEnabledForSomeSelected;\n });\n\n return out.sort((a, b) => (b.weight || 0) - (a.weight || 0));\n }\n },\n\n data() {\n return {\n // List of selected items in the table\n selectedRows: [],\n prevNode: null,\n };\n },\n\n watch: {\n /**\n * Handle changes to the page (SSP enabled)\n */\n externalPaginationResult() {\n // Handle changes to the page (SSP enabled)\n this.pageChanged(this.pagedRows);\n },\n\n /**\n * Handle changes to the page (SSP disabled)\n */\n pagedRows() {\n this.pageChanged(this.pagedRows);\n }\n },\n\n methods: {\n /**\n * Remove items that are in the selection but no longer in the table.\n */\n pageChanged(page) {\n const toRemove = [];\n\n for (const node of this.selectedRows) {\n if (!page.includes(node) ) {\n toRemove.push(node);\n }\n }\n\n this.update([], toRemove);\n },\n\n onToggleAll(value) {\n if ( value ) {\n this.update(this.pagedRows, []);\n\n return true;\n } else {\n this.update([], this.pagedRows);\n\n return false;\n }\n },\n\n onRowMousedown(e) {\n if ( isRange(e) || this.isSelectionCheckbox(e.target) ) {\n e.preventDefault();\n }\n },\n\n removeOrAddHover(option, e) {\n // Hardcoded logic to not overcomplicate just adding the conditions of next and previous\n const tr = e.target.closest('TR');\n\n if (tr.classList.contains('sub-row') || tr.classList.contains('additional-sub-row')) {\n const trPreviousRow = tr.previousElementSibling;\n const trNextRow = tr.nextElementSibling;\n\n trPreviousRow.classList[option]('sub-row-hovered');\n\n if (!trPreviousRow.classList.contains('main-row')) {\n const trMainRow = trPreviousRow.previousElementSibling;\n\n trMainRow.classList[option]('sub-row-hovered');\n }\n if (trNextRow?.classList.contains('sub-row')) {\n trNextRow.classList[option]('sub-row-hovered');\n }\n }\n },\n onRowMouseEnter(e) {\n this.removeOrAddHover('add', e);\n },\n\n onRowMouseLeave(e) {\n this.removeOrAddHover('remove', e);\n },\n\n nodeForEvent(e) {\n const tagName = e.target.tagName;\n const tgt = e.target;\n const actionElement = tgt.closest('.actions');\n\n if ( tgt.classList.contains('select-all-check') ) {\n return;\n }\n\n if ( !actionElement ) {\n if (\n tagName === 'A' ||\n tagName === 'BUTTON' ||\n getParent(tgt, '.btn')\n ) {\n return;\n }\n }\n\n const tgtRow = e.target.closest('TR');\n\n return this.nodeForRow(tgtRow);\n },\n\n nodeForRow(tgtRow) {\n if ( tgtRow?.classList.contains('separator-row') ) {\n return;\n }\n\n while ( tgtRow && !tgtRow.classList.contains('main-row') ) {\n tgtRow = tgtRow.previousElementSibling;\n }\n\n if ( !tgtRow ) {\n return;\n }\n\n const nodeId = tgtRow.dataset.nodeId;\n\n if ( !nodeId ) {\n return;\n }\n\n const node = this.pagedRows.find( (x) => get(x, this.keyField) === nodeId );\n\n return node;\n },\n\n async onRowClick(e) {\n const node = this.nodeForEvent(e);\n const td = e.target.closest('TD');\n const skipSelect = td?.classList.contains('skip-select');\n\n if (skipSelect) {\n return;\n }\n const selection = this.selectedRows;\n const isCheckbox = this.isSelectionCheckbox(e.target) || td?.classList.contains('row-check');\n const isExpand = td?.classList.contains('row-expand');\n const content = this.pagedRows;\n\n this.$emit('rowClick', e);\n\n if ( !node ) {\n return;\n }\n\n if ( isExpand ) {\n this.toggleExpand(node);\n\n return;\n }\n\n const actionElement = e.target.closest('.actions');\n\n if ( actionElement ) {\n let resources = [node];\n\n if ( this.mangleActionResources ) {\n const i = actionElement.querySelector('i');\n\n i.classList.remove('icon-actions');\n i.classList.add('icon-spinner');\n i.classList.add('icon-spin');\n\n try {\n resources = await this.mangleActionResources(resources);\n } finally {\n i.classList.remove('icon-spinner');\n i.classList.remove('icon-spin');\n i.classList.add('icon-actions');\n }\n }\n\n if (!this.targetElem && !this.shouldShow) {\n this.$store.commit(`action-menu/show`, {\n resources,\n event: e,\n elem: actionElement\n });\n } else if (this.targetElem === actionElement && this.shouldShow) {\n // this condition is needed so that we can \"toggle\" the action menu with\n // the keyboard for accessibility (row action menu)\n this.$store.commit('action-menu/hide');\n }\n\n return;\n }\n\n const isSelected = selection.includes(node);\n let prevNode = this.prevNode;\n\n // PrevNode is only valid if it's in the current content\n if ( !prevNode || !content.includes(prevNode) ) {\n prevNode = node;\n }\n\n if ( isMore(e) ) {\n this.toggle(node);\n } else if ( isRange(e) ) {\n const toToggle = this.nodesBetween(prevNode, node);\n\n if ( isSelected ) {\n this.update([], toToggle);\n } else {\n this.update(toToggle, []);\n }\n } else if ( isCheckbox ) {\n this.toggle(node);\n } else {\n this.update([node], content);\n }\n\n this.prevNode = node;\n },\n\n async onRowContext(e) {\n const node = this.nodeForEvent(e);\n\n if ( suppressContextMenu(e) ) {\n return;\n }\n\n if ( !node ) {\n return;\n }\n\n e.stopPropagation();\n\n this.prevNode = node;\n const isSelected = this.selectedRows.includes(node);\n\n if ( !isSelected ) {\n this.update([node], this.selectedRows.slice());\n }\n },\n\n keySelectRow(row, more = false) {\n const node = this.nodeForRow(row);\n const content = this.pagedRows;\n\n if ( !node ) {\n return;\n }\n\n if ( more ) {\n this.update([node], []);\n } else {\n this.update([node], content);\n }\n\n this.prevNode = node;\n },\n\n isSelectionCheckbox(element) {\n return element.tagName === 'INPUT' &&\n element.type === 'checkbox' &&\n element.closest('.selection-checkbox') !== null;\n },\n\n nodesBetween(a, b) {\n let toToggle = [];\n const key = this.groupBy;\n\n if ( key ) {\n // Grouped has 2 levels to look through\n const grouped = this.groupedRows;\n\n let from = this.groupIdx(a);\n let to = this.groupIdx(b);\n\n if ( !from || !to ) {\n return [];\n }\n\n // From has to come before To\n if ( (from.group > to.group) || ((from.group === to.group) && (from.item > to.item)) ) {\n [from, to] = [to, from];\n }\n\n for ( let i = from.group ; i <= to.group ; i++ ) {\n const items = grouped[i].rows;\n let j = (from.group === i ? from.item : 0);\n\n while ( items[j] && ( i < to.group || j <= to.item )) {\n toToggle.push(items[j]);\n j++;\n }\n }\n } else {\n // Ungrouped is much simpler\n const content = this.pagedRows;\n let from = content.indexOf(a);\n let to = content.indexOf(b);\n\n [from, to] = [Math.min(from, to), Math.max(from, to)];\n toToggle = content.slice(from, to + 1);\n }\n\n // check if there is already duplicate content selected (selectedRows) on the list to toggle...\n toToggle = toToggle.filter((item) => !this.selectedRows.includes(item));\n\n return toToggle;\n },\n\n groupIdx(node) {\n const grouped = this.groupedRows;\n\n for ( let i = 0 ; i < grouped.length ; i++ ) {\n const rows = grouped[i].rows;\n\n for ( let j = 0 ; j < rows.length ; j++ ) {\n if ( rows[j] === node ) {\n return {\n group: i,\n item: j\n };\n }\n }\n }\n\n return null;\n },\n\n toggle(node) {\n const add = [];\n const remove = [];\n\n if (this.selectedRows.includes(node)) {\n remove.push(node);\n } else {\n add.push(node);\n }\n\n this.update(add, remove);\n },\n\n update(toAdd, toRemove) {\n toRemove.forEach((row) => {\n const index = this.selectedRows.findIndex((r) => r === row);\n\n if (index !== -1) {\n this.selectedRows.splice(index, 1);\n }\n });\n\n if ( toAdd ) {\n this.selectedRows.push(...toAdd);\n }\n\n // Uncheck and check the checkboxes of nodes that have been added/removed\n if (toRemove.length) {\n this.$nextTick(() => {\n for ( let i = 0 ; i < toRemove.length ; i++ ) {\n this.updateInput(toRemove[i], false, this.keyField);\n }\n });\n }\n\n if (toAdd.length) {\n this.$nextTick(() => {\n for ( let i = 0 ; i < toAdd.length ; i++ ) {\n this.updateInput(toAdd[i], true, this.keyField);\n }\n });\n }\n\n this.$nextTick(() => {\n this.$emit('selection', this.selectedRows);\n if (this.selectedRows && this.selectedRows.length) {\n for ( let i = 0 ; i < this.selectedRows.length ; i++ ) {\n this.updateInput(this.selectedRows[i], true, this.keyField);\n }\n }\n });\n },\n\n updateInput(node, on, keyField) {\n const id = get(node, keyField);\n\n if ( id ) {\n // Note: This is looking for the checkbox control for the row\n const input = this.$el.querySelector(`div[data-checkbox-ctrl][data-node-id=\"${ id }\"]`);\n\n if ( input && !input.disabled ) {\n const label = input.querySelector('label');\n\n if (label) {\n label.value = on;\n }\n let tr = input.closest('tr');\n let first = true;\n\n while ( tr && (first || tr.classList.contains('sub-row') || tr.classList.contains('additional-sub-row')) ) {\n if (on) {\n tr.classList.add('row-selected');\n } else {\n tr.classList.remove('row-selected');\n }\n tr = tr.nextElementSibling;\n first = false;\n }\n }\n }\n },\n\n select(nodes) {\n nodes.forEach((node) => {\n const id = get(node, this.keyField);\n const input = this.$el.querySelector(`label[data-node-id=\"${ id }\"]`);\n\n input.dispatchEvent(new Event('click'));\n });\n },\n\n applyTableAction(action, args, event) {\n const opts = { alt: event && isAlternate(event), event };\n\n // Go through the table selection and filter out those actions that can't run the chosen action\n const executableSelection = this.selectedRows.filter((row) => {\n const matchingResourceAction = row.availableActions.find((a) => a.action === action.action);\n\n return matchingResourceAction?.enabled;\n });\n\n _execute(executableSelection, action, args, opts, this);\n\n this.actionOfInterest = null;\n },\n\n clearSelection() {\n this.update([], [...this.selectedRows]);\n },\n\n }\n};\n\n// ---------------------------------------------------------------------\n// --- Helpers that were in selectionStore.js --------------------------\n// ---------------------------------------------------------------------\n\nlet anon = 0;\n\nfunction _add(map, act, incrementCounts = true) {\n let id = act.action;\n\n if ( !id ) {\n id = `anon${ anon }`;\n anon++;\n }\n\n let obj = map[id];\n\n if ( !obj ) {\n obj = Object.assign({}, act);\n map[id] = obj;\n obj.allEnabled = false;\n }\n\n if ( !act.enabled ) {\n obj.allEnabled = false;\n } else {\n obj.anyEnabled = true;\n }\n\n if ( incrementCounts ) {\n obj.available = (obj.available || 0) + (!act.enabled ? 0 : 1 );\n obj.total = (obj.total || 0) + 1;\n }\n\n return obj;\n}\n\nfunction _filter(map, disableAll = false) {\n const out = filterBy(Object.values(map), 'anyEnabled', true);\n\n for ( const act of out ) {\n if ( disableAll ) {\n act.enabled = false;\n } else {\n act.enabled = ( act.available >= act.total );\n }\n }\n\n return out;\n}\n\nfunction _execute(resources, action, args, opts = {}, ctx) {\n args = args || [];\n\n // New pattern for extensions - always call invoke\n if (action.invoke) {\n const actionOpts = {\n action,\n event: opts.event,\n isAlt: !!opts.alt,\n };\n\n return action.invoke.apply(ctx, [actionOpts, resources || [], args]);\n }\n\n /**\n * for the given resource find it's action matching the target action. if that target action has an alt resource return it\n */\n const findResourceFromAction = (r) => {\n const actualAction = r.availableActions.find((aa) => aa.action === action.action);\n\n return actualAction?.altResource || r;\n };\n\n // if there there are multiple resources and a bulk action, use it and pass in the resources\n // for example cluster management cluster list Download KubeConfig\n if ( resources.length > 1 && action.bulkAction && !opts.alt ) {\n const applyResource = findResourceFromAction(resources[0]);\n const fn = applyResource[action.bulkAction];\n\n if ( fn ) {\n const applyResources = resources.map(findResourceFromAction);\n\n return fn.call(applyResource, applyResources, ...args);\n }\n }\n\n const promises = [];\n\n // if there is a single resource or no bulk action, for each resource execute it's action\n // for example delete when only one row is selected\n for ( const resource of resources ) {\n let fn;\n\n const applyResource = findResourceFromAction(resource);\n\n if (opts.alt && action.altAction) {\n fn = applyResource[action.altAction];\n } else {\n fn = applyResource[action.action];\n }\n\n if ( fn ) {\n promises.push(fn.apply(applyResource, args));\n }\n }\n\n return Promise.all(promises);\n}\n","import { render } from \"./THead.vue?vue&type=template&id=5a4a5cc3&scoped=true\"\nimport script from \"./THead.vue?vue&type=script&lang=js\"\nexport * from \"./THead.vue?vue&type=script&lang=js\"\n\nimport \"./THead.vue?vue&type=style&index=0&id=5a4a5cc3&lang=scss&scoped=true\"\nimport \"./THead.vue?vue&type=style&index=1&id=5a4a5cc3&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a4a5cc3\"]])\n\nexport default __exports__","import { get } from '@shell/utils/object';\nimport { addObject, addObjects, isArray, removeAt } from '@shell/utils/array';\n\nexport const ADV_FILTER_ALL_COLS_VALUE = 'allcols';\nexport const ADV_FILTER_ALL_COLS_LABEL = 'All Columns';\nconst LABEL_IDENTIFIER = ':::islabel';\n\nexport default {\n data() {\n return {\n searchQuery: null,\n previousFilter: null,\n previousResult: null,\n };\n },\n\n computed: {\n searchFields() {\n const out = columnsToSearchField(this.columns);\n\n if ( this.extraSearchFields ) {\n addObjects(out, this.extraSearchFields);\n }\n\n return out;\n },\n\n /*\n subFields: computed('subHeaders.@each.{searchField,name}', 'extraSearchSubFields.[]', function() {\n let out = headersToSearchField(get(this, 'subHeaders'));\n\n return out.addObjects(get(this, 'extraSearchSubFields') || []);\n }),\n */\n filteredRows() {\n if (this.externalPaginationEnabled) {\n return;\n }\n\n // PROP hasAdvancedFiltering comes from Advanced Filtering mixin (careful changing data var there...)\n if (!this.hasAdvancedFiltering) {\n return this.handleFiltering();\n } else {\n return this.handleAdvancedFiltering();\n }\n },\n },\n\n methods: {\n handleAdvancedFiltering() {\n this.subMatches = null;\n\n if (this.searchQuery.length) {\n const out = (this.arrangedRows || []).slice();\n\n const res = out.filter((row) => {\n return this.searchQuery.every((f) => {\n if (f.prop === ADV_FILTER_ALL_COLS_VALUE) {\n // advFilterSelectOptions comes from Advanced Filtering mixin\n // remove the All Columns option from the list so that we don't iterate over it\n const allCols = this.advFilterSelectOptions.slice(1);\n let searchFields = [];\n\n allCols.forEach((col) => {\n if (col.value.includes('[') && col.value.includes(']')) {\n searchFields = searchFields.concat(JSON.parse(col.value));\n } else {\n // this means we are on the presence of a label, which should be dealt\n // carefully because of object path such row.metadata.labels.\"app.kubernetes.io/managed-by\n const value = col.isLabel ? `${ col.label }${ LABEL_IDENTIFIER }` : col.value;\n\n searchFields.push(value);\n }\n });\n\n return handleStringSearch(searchFields, [f.value], row);\n } else {\n if (f.prop.includes('[') && f.prop.includes(']')) {\n return handleStringSearch(JSON.parse(f.prop), [f.value], row);\n }\n\n let prop = f.prop;\n\n // this means we are on the presence of a label, which should be dealt\n // carefully because of object path such row.metadata.labels.\"app.kubernetes.io/managed-by\"\n if (f.prop.includes('metadata.labels')) {\n prop = `${ f.label }${ LABEL_IDENTIFIER }`;\n }\n\n return handleStringSearch([prop], [f.value], row);\n }\n });\n });\n\n return res;\n }\n\n // return arrangedRows array if we don't have anything to search for...\n return this.arrangedRows;\n },\n\n handleFiltering() {\n const searchText = (this.searchQuery || '').trim().toLowerCase();\n let out;\n\n if ( searchText && this.previousResult && searchText.startsWith(this.previousFilter) ) {\n // If the new search is an addition to the last one, we can start with the same set of results as last time\n // and filter those down, since adding more searchText can only reduce the number of results.\n out = this.previousResult.slice();\n } else {\n this.previousResult = null;\n out = (this.arrangedRows || []).slice();\n }\n\n this.previousFilter = searchText;\n\n if ( !searchText.length ) {\n this.subMatches = null;\n this.previousResult = null;\n\n return out;\n }\n\n const searchFields = this.searchFields;\n const searchTokens = searchText.split(/\\s*[, ]\\s*/);\n const subSearch = this.subSearch;\n const subFields = this.subFields;\n const subMatches = {};\n\n for ( let i = out.length - 1 ; i >= 0 ; i-- ) {\n const row = out[i];\n let hits = 0;\n let mainFound = true;\n\n mainFound = handleStringSearch(searchFields, searchTokens, row);\n\n if ( subFields && subSearch) {\n const subRows = row[subSearch] || [];\n\n for ( let k = subRows.length - 1 ; k >= 0 ; k-- ) {\n let subFound = true;\n\n subFound = handleStringSearch(subFields, searchTokens, row);\n\n if ( subFound ) {\n hits++;\n }\n }\n\n subMatches[get(row, this.keyField)] = hits;\n }\n\n if ( !mainFound && hits === 0 ) {\n removeAt(out, i);\n }\n }\n\n this.subMatches = subMatches;\n this.previousResult = out;\n\n return out;\n }\n },\n\n watch: {\n arrangedRows(q) {\n // The rows changed so the old filter result is no longer useful\n this.previousResult = null;\n },\n\n searchQuery() {\n this.debouncedPaginationChanged();\n },\n },\n};\n\nfunction columnsToSearchField(columns) {\n const out = [];\n\n (columns || []).forEach((column) => {\n const field = column.search;\n\n if ( field ) {\n if ( typeof field === 'string' ) {\n addObject(out, field);\n } else if ( isArray(field) ) {\n addObjects(out, field);\n }\n } else if ( field === false ) {\n // Don't add the name\n } else {\n // Use value/name as the default\n addObject(out, column.value || column.name);\n }\n });\n\n return out.filter((x) => !!x);\n}\n\nconst ipLike = /^[0-9a-f\\.:]+$/i;\n\nfunction handleStringSearch(searchFields, searchTokens, row) {\n for ( let j = 0 ; j < searchTokens.length ; j++ ) {\n let expect = true;\n let token = searchTokens[j];\n\n if ( token.substr(0, 1) === '!' ) {\n expect = false;\n token = token.substr(1);\n }\n\n if ( token && matches(searchFields, token, row) !== expect ) {\n return false;\n }\n\n return true;\n }\n}\n\nfunction matches(fields, token, item) {\n for ( let field of fields ) {\n if ( !field ) {\n continue;\n }\n\n // some items might not even have metadata.labels or metadata.labels.something... ignore those items. Nothing to filter by\n if (typeof field !== 'function' &&\n field.includes(LABEL_IDENTIFIER) &&\n (!item.metadata.labels || !item.metadata.labels[field.replace(LABEL_IDENTIFIER, '')])) {\n continue;\n }\n\n let modifier;\n let val;\n\n if (typeof field === 'function') {\n val = field(item);\n } else if (field.includes(LABEL_IDENTIFIER)) {\n val = item.metadata.labels[field.replace(LABEL_IDENTIFIER, '')];\n } else {\n const idx = field.indexOf(':');\n\n if ( idx > 0 ) {\n modifier = field.substr(idx + 1);\n field = field.substr(0, idx);\n }\n\n if ( field.includes('.') ) {\n val = get(item, field);\n } else {\n val = item[field];\n }\n }\n\n if ( val === undefined ) {\n continue;\n }\n\n val = (`${ val }`).toLowerCase();\n if ( !val ) {\n continue;\n }\n\n if ( !modifier ) {\n if ( val.includes((`${ token }`).toLowerCase()) ) {\n return true;\n }\n } else if ( modifier === 'exact' ) {\n if ( val === token ) {\n return true;\n }\n } else if ( modifier === 'ip' ) {\n const tokenMayBeIp = ipLike.test(token);\n\n if ( tokenMayBeIp ) {\n const re = new RegExp(`(?:^|\\\\.)${ token }(?:\\\\.|$)`);\n\n if ( re.test(val) ) {\n return true;\n }\n }\n } else if ( modifier === 'prefix' ) {\n if ( val.indexOf(token) === 0) {\n return true;\n }\n }\n }\n\n return false;\n}\n","import { sortBy } from '@shell/utils/sort';\nimport { uniq } from '@shell/utils/array';\n\n/**\n * Always sort by something, this is the best guess on properties\n *\n * Can be overriden\n */\nconst DEFAULT_MANDATORY_SORT = ['nameSort', 'id'];\n\nexport default {\n computed: {\n sortFields() {\n let fromGroup = ( this.groupBy ? this.groupSort || this.groupBy : null) || [];\n let fromColumn = [];\n\n const column = (this.columns || this.headers).find((x) => x && x.name && x.name.toLowerCase() === this.sortBy.toLowerCase());\n\n if ( this.sortBy && column && column.sort ) {\n fromColumn = column.sort;\n }\n\n if ( !Array.isArray(fromGroup) ) {\n fromGroup = [fromGroup];\n }\n\n if ( !Array.isArray(fromColumn) ) {\n fromColumn = [fromColumn];\n }\n\n // return the sorting based on grouping, user selection and fallback\n return uniq([...fromGroup, ...fromColumn].concat(...(this.mandatorySort || DEFAULT_MANDATORY_SORT)));\n },\n\n arrangedRows() {\n if (this.externalPaginationEnabled) {\n return;\n }\n\n let key;\n\n // Why is sortGeneration needed when we have sortGenerationFn?\n // 1. sortGenerationFn is called when this fn is kicked off and returns latest and greatest string (given things like namespace)\n // 2. it can be kicked off with stale rows... which is then stored against latest string\n // 3. when updates rows comes through... sortGenerationFn returns same string\n // 4. we therefor think nothing has changed and return old, stale rows\n // This is avoided by outside storage of sortGeneration against rows\n // (it would be nice to have that hash on the rows object itself, but it gets messy)\n const sortGenerationKey = this.sortGeneration || this.sortGenerationFn?.apply(this);\n\n if ( sortGenerationKey) {\n key = `${ sortGenerationKey }/${ this.rows.length }/${ this.descending }/${ this.sortFields.join(',') }`;\n\n if ( this.cacheKey === key && this.cachedRowsRef === this.rows ) {\n return this.cachedRows;\n }\n }\n\n const out = sortBy(this.rows, this.sortFields, this.descending);\n\n if ( key ) {\n this.cacheKey = key;\n this.cachedRows = out;\n this.cachedRowsRef = this.rows;\n }\n\n return out;\n },\n },\n\n data() {\n let sortBy = null;\n let descending = false;\n\n this._defaultSortBy = this.defaultSortBy;\n\n // Try to find a reasonable default sort\n if ( !this._defaultSortBy ) {\n const markedColumn = this.headers.find((x) => !!x.defaultSort);\n const nameColumn = this.headers.find( (x) => x.name === 'name');\n\n if ( markedColumn ) {\n this._defaultSortBy = markedColumn.name;\n descending = markedColumn.defaultSortDescending || false;\n } else if ( nameColumn ) {\n // Use the name column if there is one\n this._defaultSortBy = nameColumn.name;\n } else {\n // The first column that isn't state\n const first = this.headers.filter( (x) => x.name !== 'state' )[0];\n\n if ( first ) {\n this._defaultSortBy = first.name;\n } else {\n // I give up\n this._defaultSortBy = 'id';\n }\n }\n }\n\n // If the sort column doesn't exist or isn't specified, use default\n if ( !sortBy || !this.headers.find((x) => x.name === sortBy ) ) {\n sortBy = this._defaultSortBy;\n }\n\n return {\n sortBy,\n descending,\n cachedRows: null,\n cachedRowsRef: null,\n cacheKey: null,\n };\n },\n\n methods: {\n changeSort(sort, desc) {\n this.sortBy = sort;\n this.descending = desc;\n\n // Always go back to the first page when the sort is changed\n this.setPage(1);\n },\n },\n\n watch: {\n sortFields() {\n this.debouncedPaginationChanged();\n },\n\n descending() {\n this.debouncedPaginationChanged();\n }\n }\n};\n","import { ROWS_PER_PAGE } from '@shell/store/prefs';\n\nexport default {\n computed: {\n totalRows() {\n if (this.externalPaginationEnabled) {\n return this.externalPaginationResult?.count || 0;\n }\n\n return this.filteredRows.length;\n },\n\n indexFrom() {\n return Math.max(0, 1 + this.perPage * (this.page - 1));\n },\n\n indexTo() {\n return Math.min(this.totalRows, this.indexFrom + this.perPage - 1);\n },\n\n totalPages() {\n return Math.ceil(this.totalRows / this.perPage );\n },\n\n showPaging() {\n if (!this.paging) {\n return false;\n }\n\n const havePages = this.totalPages > 1;\n\n if (this.altLoading) {\n return havePages;\n }\n\n return !this.loading && havePages;\n },\n\n pagingDisplay() {\n const opt = {\n ...(this.pagingParams || {}),\n\n count: this.totalRows,\n pages: this.totalPages,\n from: this.indexFrom,\n to: this.indexTo,\n };\n\n return this.$store.getters['i18n/t'](this.pagingLabel, opt);\n },\n\n perPage() {\n let out = this.rowsPerPage || 0;\n\n if ( out <= 0 ) {\n out = parseInt(this.$store.getters['prefs/get'](ROWS_PER_PAGE), 10) || 0;\n }\n\n // This should ideally never happen, but the preference value could be invalid, so return something...\n if ( out <= 0 ) {\n out = 10;\n }\n\n return out;\n },\n\n pagedRows() {\n if (this.externalPaginationEnabled) {\n return this.rows;\n } else if ( this.paging ) {\n return this.filteredRows.slice(this.indexFrom - 1, this.indexTo);\n } else {\n return this.filteredRows;\n }\n }\n },\n\n data() {\n return { page: 1 };\n },\n\n watch: {\n pagedRows() {\n // Go to the last page if we end up \"past\" the last page because the table changed\n\n const from = this.indexFrom;\n const last = this.totalRows;\n\n if ( this.totalPages > 0 && this.page > 1 && from > last ) {\n this.setPage(this.totalPages);\n }\n },\n\n page() {\n this.debouncedPaginationChanged();\n },\n\n perPage() {\n this.debouncedPaginationChanged();\n },\n\n totalRows() {\n this.updateTabCount(this.totalRows);\n }\n },\n\n methods: {\n setPage(num) {\n if (this.page === num) {\n return;\n }\n\n this.page = num;\n },\n\n goToPage(which) {\n let page;\n\n switch (which) {\n case 'first':\n page = 1;\n break;\n case 'prev':\n page = Math.max(1, this.page - 1 );\n break;\n case 'next':\n page = Math.min(this.totalPages, this.page + 1 );\n break;\n case 'last':\n page = this.totalPages;\n break;\n }\n\n this.setPage(page);\n },\n\n getPageByRow(rowId, getRowId = (x) => x) {\n const pos = this.filteredRows.map(getRowId).indexOf(rowId);\n\n if (pos === -1) {\n return null;\n }\n\n return Math.ceil(pos / this.perPage);\n }\n }\n};\n","import { get } from '@shell/utils/object';\n\nexport default {\n computed: {\n /**\n * The group config associated with the selected group\n */\n selectedGroupOption() {\n return this.groupOptions?.find((go) => go.value === this.group);\n },\n\n groupedRows() {\n const groupKey = this.groupBy;\n const refKey = this.groupRef || this.selectedGroupOption?.groupLabelKey || groupKey;\n\n if ( !groupKey) {\n return [{\n key: 'default',\n ref: 'default',\n rows: this.pagedRows,\n }];\n }\n\n const out = [];\n const map = {};\n\n for ( const obj of this.pagedRows ) {\n const key = get(obj, groupKey) || '';\n const ref = get(obj, refKey);\n let entry = map[key];\n\n if ( entry ) {\n entry.rows.push(obj);\n } else {\n entry = {\n key,\n ref,\n rows: [obj]\n };\n map[key] = entry;\n out.push(entry);\n }\n }\n\n return out;\n }\n }\n};\n","import debounce from 'lodash/debounce';\n\n// Use a visible display type to reduce flickering\nconst displayType = 'inline-flex';\n\nexport default {\n\n data() {\n return {\n bulkActionsClass: 'bulk',\n bulkActionClass: 'bulk-action',\n bulkActionsDropdownClass: 'bulk-actions-dropdown',\n bulkActionAvailabilityClass: 'action-availability',\n\n hiddenActions: [],\n\n updateHiddenBulkActions: debounce(this.protectedUpdateHiddenBulkActions, 10)\n };\n },\n\n beforeUnmount() {\n window.removeEventListener('resize', this.onWindowResize);\n },\n\n mounted() {\n window.addEventListener('resize', this.onWindowResize);\n this.updateHiddenBulkActions();\n },\n\n watch: {\n selectedRows() {\n this.updateHiddenBulkActions();\n },\n keyedAvailableActions() {\n this.updateHiddenBulkActions();\n },\n },\n\n computed: {\n availableActions() {\n return this.bulkActionsForSelection.filter((act) => !act.external);\n },\n\n keyedAvailableActions() {\n return this.availableActions.map((aa) => aa.action);\n },\n\n selectedRowsText() {\n if (!this.selectedRows.length) {\n return null;\n }\n\n return this.t('sortableTable.actionAvailability.selected', { actionable: this.selectedRows.length });\n },\n\n // Shows a tooltip if the bulk action that the user is hovering over can not be applied to all selected rows\n actionTooltip() {\n if (!this.selectedRows.length || !this.actionOfInterest) {\n return null;\n }\n\n const runnableTotal = this.selectedRows.filter(this.canRunBulkActionOfInterest).length;\n\n if (runnableTotal === this.selectedRows.length) {\n return null;\n }\n\n return this.t('sortableTable.actionAvailability.some', {\n actionable: runnableTotal,\n total: this.selectedRows.length,\n });\n },\n },\n\n methods: {\n onWindowResize() {\n this.updateHiddenBulkActions();\n this.onScroll();\n },\n\n /**\n * Determine if any actions wrap over to a new line, if so group them into a dropdown instead\n */\n protectedUpdateHiddenBulkActions() {\n if (!this.$refs.container) {\n return;\n }\n\n const actionsContainer = this.$refs.container.querySelector(`.${ this.bulkActionsClass }`);\n const actionsDropdown = this.$refs.container.querySelector(`.${ this.bulkActionsDropdownClass }`);\n\n if (!actionsContainer || !actionsDropdown) {\n return;\n }\n\n const actionsContainerWidth = actionsContainer.offsetWidth;\n const actionsHTMLCollection = this.$refs.container.querySelectorAll(`.${ this.bulkActionClass }`);\n const actions = Array.from(actionsHTMLCollection || []);\n\n // Determine if the 'x selected' label should show and it's size\n const selectedRowsText = this.$refs.container.querySelector(`.${ this.bulkActionAvailabilityClass }`);\n let selectedRowsTextWidth = 0;\n\n if (this.selectedRowsText) {\n if (selectedRowsText) {\n selectedRowsText.style.display = displayType;\n selectedRowsTextWidth = selectedRowsText.offsetWidth;\n } else {\n selectedRowsText.style.display = 'none;';\n }\n }\n\n this.hiddenActions = [];\n\n let cumulativeWidth = 0;\n let showActionsDropdown = false;\n let totalAvailableWidth = actionsContainerWidth - selectedRowsTextWidth;\n\n // Loop through all actions to determine if some exceed the available space in the row, if so hide them and instead show in a dropdown\n for (let i = 0; i < actions.length; i++) {\n const ba = actions[i];\n\n ba.style.display = displayType;\n const actionWidth = ba.offsetWidth;\n\n cumulativeWidth += actionWidth + 15;\n if (cumulativeWidth >= totalAvailableWidth) {\n // There are too many actions so the drop down will be visible.\n if (!showActionsDropdown) {\n // If we haven't previously enabled the drop down...\n actionsDropdown.style.display = displayType;\n // By showing the drop down some previously visible actions may now be hidden, so start the process again\n // ... except taking into account the width of drop down width in the available space\n i = -1;\n cumulativeWidth = 0;\n showActionsDropdown = true;\n totalAvailableWidth = actionsContainerWidth - actionsDropdown.offsetWidth - selectedRowsTextWidth;\n } else {\n // Collate the actions in an array and hide in the normal row\n const id = ba.attributes.getNamedItem('id').value;\n\n this.hiddenActions.push(this.availableActions.find((aa) => aa.action === id));\n ba.style.display = 'none';\n }\n }\n }\n\n if (!showActionsDropdown) {\n actionsDropdown.style.display = 'none';\n }\n }\n }\n};\n","import { ADV_FILTER_ALL_COLS_VALUE, ADV_FILTER_ALL_COLS_LABEL } from './filtering';\n\nconst DEFAULT_ADV_FILTER_COLS_VALUE = ADV_FILTER_ALL_COLS_VALUE;\n\nexport default {\n props: {\n /**\n * Group value\n * To be used on the THead component when adv filtering is present\n */\n group: {\n type: String,\n default: () => ''\n },\n /**\n * Group options\n * All of the grouping options available to be used on the THead component when adv filtering is present\n */\n groupOptions: {\n type: Array,\n default: () => []\n },\n /**\n * Flag that controls visibility of advanced filtering feature\n */\n hasAdvancedFiltering: {\n type: Boolean,\n default: false\n },\n /**\n * Flag that controls visibility of labels as possibe toggable cols to be displayed on the Sortable Table\n */\n advFilterHideLabelsAsCols: {\n type: Boolean,\n default: false\n },\n /**\n * Flag that prevents filtering by labels\n */\n advFilterPreventFilteringLabels: {\n type: Boolean,\n default: false\n },\n },\n data() {\n return {\n columnOptions: [],\n colOptionsWatcher: null,\n advancedFilteringVisibility: false,\n advancedFilteringValues: [],\n advFilterSearchTerm: null,\n advFilterSelectedProp: DEFAULT_ADV_FILTER_COLS_VALUE,\n advFilterSelectedLabel: ADV_FILTER_ALL_COLS_LABEL,\n column: null,\n };\n },\n\n mounted() {\n if (this.hasAdvancedFiltering) {\n // trigger to first populate the cols options for filters\n this.updateColsOptions();\n }\n },\n\n watch: {\n advancedFilteringValues() {\n // passing different dummy args to make sure update is triggered\n this.watcherUpdateLiveAndDelayed(true, false);\n },\n advancedFilteringVisibility(neu) {\n if (neu) {\n // check if user clicked outside the advanced filter box\n window.addEventListener('click', this.onClickOutside);\n\n // update filtering options and toggable cols every time dropdown is open\n this.updateColsOptions();\n } else {\n // unregister click event\n window.removeEventListener('click', this.onClickOutside);\n }\n }\n },\n\n computed: {\n advFilterSelectOptions() {\n return this.columnOptions.filter((c) => c.isFilter && !c.preventFiltering);\n },\n\n advGroupOptions() {\n return this.groupOptions.map((item) => {\n return {\n label: this.t(item.tooltipKey),\n value: item.value\n };\n });\n },\n },\n\n methods: {\n handleColsVisibilyAndFiltering(cols) {\n const allCols = cols;\n\n this.columnOptions.forEach((advCol) => {\n if (advCol.isTableOption) {\n const index = allCols.findIndex((col) => col.name === advCol.name);\n\n if (index !== -1) {\n allCols[index].isColVisible = advCol.isColVisible;\n allCols[index].isFilter = advCol.isFilter;\n } else {\n allCols.push(advCol);\n }\n }\n });\n\n return allCols;\n },\n // advanced filtering methods\n setColsOptions() {\n let opts = [];\n const rowLabels = [];\n const headerProps = [];\n\n // Filter out any columns that are too heavy to show for large page sizes\n const filteredHeaders = this.headers.slice().filter((c) => (!c.maxPageSize || (c.maxPageSize && c.maxPageSize >= this.perPage)));\n\n // add table cols from config (headers)\n filteredHeaders.forEach((prop) => {\n const name = prop.name;\n const label = prop.labelKey ? this.t(`${ prop.labelKey }`) : prop.label;\n const isFilter = !!((!Object.keys(prop).includes('search') || prop.search));\n let sortVal = prop.sort;\n const valueProp = prop.valueProp || prop.value;\n let value = null;\n let isColVisible = true;\n\n if (prop.sort && valueProp) {\n if (typeof prop.sort === 'string') {\n sortVal = prop.sort.includes(':') ? [prop.sort.split(':')[0]] : [prop.sort];\n }\n\n if (!sortVal.includes(valueProp)) {\n value = JSON.stringify(sortVal.concat([valueProp]));\n } else {\n value = JSON.stringify([valueProp]);\n }\n } else if (valueProp) {\n value = JSON.stringify([valueProp]);\n } else {\n value = null;\n }\n\n // maintain current visibility of cols if they exist already\n if (this.columnOptions?.length) {\n const opt = this.columnOptions.find((colOpt) => colOpt.name === name && colOpt.label === label);\n\n if (opt) {\n isColVisible = opt.isColVisible;\n }\n }\n\n headerProps.push({\n name,\n label,\n value,\n isFilter,\n isTableOption: true,\n isColVisible\n });\n });\n\n // add labels as table cols\n if (this.rows.length) {\n this.rows.forEach((row) => {\n if (row.metadata?.labels && Object.keys(row.metadata?.labels).length) {\n Object.keys(row.metadata?.labels).forEach((label) => {\n const res = {\n name: label,\n label,\n value: `metadata.labels.${ label }`,\n isFilter: true,\n isTableOption: true,\n isColVisible: false,\n isLabel: true,\n preventFiltering: this.advFilterPreventFilteringLabels,\n preventColToggle: this.advFilterHideLabelsAsCols\n };\n\n // maintain current visibility of cols if they exist already\n if (this.columnOptions?.length) {\n const opt = this.columnOptions.find((colOpt) => colOpt.name === label && colOpt.label === label);\n\n if (opt) {\n res.isColVisible = opt.isColVisible;\n }\n }\n\n if (!rowLabels.filter((row) => row.label === label).length) {\n rowLabels.push(res);\n }\n });\n }\n });\n }\n\n opts = headerProps.concat(rowLabels);\n\n // add find on all cols option...\n if (opts.length) {\n opts.unshift({\n name: ADV_FILTER_ALL_COLS_LABEL,\n label: ADV_FILTER_ALL_COLS_LABEL,\n value: ADV_FILTER_ALL_COLS_VALUE,\n isFilter: true,\n isTableOption: false\n });\n }\n\n return opts;\n },\n addAdvancedFilter() {\n // set new advanced filter\n if (this.advFilterSelectedProp && this.advFilterSearchTerm) {\n this.advancedFilteringValues.push({\n prop: this.advFilterSelectedProp,\n value: this.advFilterSearchTerm,\n label: this.advFilterSelectedLabel\n });\n\n this.eventualSearchQuery = this.advancedFilteringValues;\n\n this.advancedFilteringVisibility = false;\n this.advFilterSelectedProp = DEFAULT_ADV_FILTER_COLS_VALUE;\n this.advFilterSelectedLabel = ADV_FILTER_ALL_COLS_LABEL;\n this.advFilterSearchTerm = null;\n }\n },\n clearAllAdvancedFilters() {\n this.advancedFilteringValues = [];\n this.eventualSearchQuery = this.advancedFilteringValues;\n\n this.advancedFilteringVisibility = false;\n this.advFilterSelectedProp = DEFAULT_ADV_FILTER_COLS_VALUE;\n this.advFilterSelectedLabel = ADV_FILTER_ALL_COLS_LABEL;\n this.advFilterSearchTerm = null;\n },\n clearAdvancedFilter(index) {\n this.advancedFilteringValues.splice(index, 1);\n this.eventualSearchQuery = this.advancedFilteringValues;\n },\n onClickOutside(event) {\n const advFilterBox = this.$refs['advanced-filter-group'];\n\n if (!advFilterBox || advFilterBox.contains(event.target)) {\n return;\n }\n this.advancedFilteringVisibility = false;\n },\n updateColsOptions() {\n this.columnOptions = this.setColsOptions();\n },\n\n // cols visibility\n changeColVisibility(colData) {\n const index = this.columnOptions.findIndex((col) => col.label === colData.label);\n\n if (index !== -1) {\n this.columnOptions[index].isColVisible = colData.value;\n }\n },\n },\n};\n","// Its quicker to render if we directly supply the components for the formatters\n// rather than just the name of a global component - so create a map of the formatter comoponents\n// NOTE: This is populated by a plugin (formatters.js) to avoid issues with plugins\nexport const FORMATTERS = {};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createBlock as _createBlock } from \"vue\"\n\nimport { RcDropdown, RcDropdownTrigger, RcDropdownItem } from '@components/RcDropdown';\ntype HiddenAction = {\n action: string;\n enabled: boolean;\n icon: string;\n label: string;\n bulkable: boolean;\n bulkAction: string;\n allEnabled: boolean;\n anyEnabled: boolean;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ActionDropdownShell',\n props: {\n disabled: { type: Boolean },\n hiddenActions: {},\n actionTooltip: {}\n },\n emits: ['click', 'mouseover', 'mouseleave'],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit;\n\nconst applyTableAction = (act: HiddenAction, args: unknown, event: Event) => {\n emit('click', act, args, event);\n};\n\nconst setBulkActionOfInterest = (act: HiddenAction | null, event: 'mouseover' | 'mouseleave' = 'mouseover') => {\n emit(event, act);\n};\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_clean_html = _resolveDirective(\"clean-html\")!\n const _directive_clean_tooltip = _resolveDirective(\"clean-tooltip\")!\n\n return (_openBlock(), _createBlock(_unref(RcDropdown), {\n distance: 14,\n placement: \"bottom\"\n }, {\n dropdownCollection: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.hiddenActions, (act, i) => {\n return _withDirectives((_openBlock(), _createBlock(_unref(RcDropdownItem), {\n key: i,\n disabled: !act.enabled,\n onClick: ($event: any) => (applyTableAction(act, null, $event)),\n onMouseover: ($event: any) => (setBulkActionOfInterest(act)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (setBulkActionOfInterest(null, 'mouseleave')))\n }, {\n before: _withCtx(() => [\n (act.icon)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(act.icon)\n }, null, 2))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"span\", null, null, 512), [\n [_directive_clean_html, act.label]\n ])\n ]),\n _: 2\n }, 1032, [\"disabled\", \"onClick\", \"onMouseover\"])), [\n [_directive_clean_tooltip, {\n content: __props.actionTooltip,\n placement: 'right'\n }]\n ])\n }), 128))\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(RcDropdownTrigger), {\n class: \"bulk-actions-dropdown\",\n size: \"large\",\n disabled: __props.disabled\n }, {\n before: _withCtx(() => [...(_cache[1] || (_cache[1] = [\n _createElementVNode(\"i\", { class: \"icon icon-gear\" }, null, -1)\n ]))]),\n after: _withCtx(() => [...(_cache[2] || (_cache[2] = [\n _createElementVNode(\"i\", { class: \"icon icon-chevron-down\" }, null, -1)\n ]))]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.t('sortableTable.bulkActions.collapsed.label')), 1)\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n }))\n}\n}\n\n})","\n\n\n \n \n \n \n \n {{ t('sortableTable.bulkActions.collapsed.label') }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n","import script from \"./ActionDropdownShell.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ActionDropdownShell.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=71341832&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=71341832&lang=scss&scoped=true\"\nimport \"./index.vue?vue&type=style&index=1&id=71341832&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-71341832\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"state-dot\" }\n\nimport { StateColor, stateColorCssVar } from '@shell/utils/style';\nimport { computed } from 'vue';\n\ninterface Props {\n color: StateColor;\n size?: string;\n}\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n color: {},\n size: { default: '8px' }\n },\n setup(__props: any) {\n\n_useCssVars(_ctx => ({\n \"v34a0a70d\": (props.size),\n \"v7e32a647\": (backgroundColor.value)\n}))\n\nconst props = __props;\nconst backgroundColor = computed(() => stateColorCssVar(props.color));\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"span\", _hoisted_1))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2001ed60&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2001ed60\"]])\n\nexport default __exports__","export function updatePageTitle(...breadcrumb: (string | null | undefined | false)[]): void {\n document.title = breadcrumb.filter((s) => s).join(' - ');\n}\n","\n","import script from \"./TabTitle.vue?vue&type=script&lang=js\"\nexport * from \"./TabTitle.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./Tab.vue?vue&type=template&id=c5795340&scoped=true\"\nimport script from \"./Tab.vue?vue&type=script&lang=js\"\nexport * from \"./Tab.vue?vue&type=script&lang=js\"\n\nimport \"./Tab.vue?vue&type=style&index=0&id=c5795340&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c5795340\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n \n \n \n \n
\n
\n \n\n\n","import { render } from \"./index.vue?vue&type=template&id=6139718a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6139718a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6139718a\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n\n\n","import { render } from \"./Tag.vue?vue&type=template&id=0d281a35&scoped=true\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\nimport \"./Tag.vue?vue&type=style&index=0&id=0d281a35&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0d281a35\"]])\n\nexport default __exports__","\n\n\n \n \n","import { render } from \"./TypeDescription.vue?vue&type=template&id=60996d0a\"\nimport script from \"./TypeDescription.vue?vue&type=script&lang=js\"\nexport * from \"./TypeDescription.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n {{ t('generic.unified') }} \n {{ t('generic.split') }} \n \n
\n
\n
\n
\n \n\n\n","\n\n\n \n \n\n\n\n\n","export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nimport { generateOptions } from '../util/params.js';\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n }\n else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nexport const lineDiff = new LineDiff();\nexport function diffLines(oldStr, newStr, options) {\n return lineDiff.diff(oldStr, newStr, options);\n}\nexport function diffTrimmedLines(oldStr, newStr, options) {\n options = generateOptions(options, { ignoreWhitespace: true });\n return lineDiff.diff(oldStr, newStr, options);\n}\n// Exported standalone so it can be used from jsonDiff too.\nexport function tokenize(value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n // Merge the content and line separators into single tokens\n for (let i = 0; i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n }\n else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n","import { diffLines } from '../diff/line.js';\n/**\n * Returns true if the filename contains characters that require C-style\n * quoting (as used by Git and GNU diffutils in diff output).\n */\nfunction needsQuoting(s) {\n for (let i = 0; i < s.length; i++) {\n if (s[i] < '\\x20' || s[i] > '\\x7e' || s[i] === '\"' || s[i] === '\\\\') {\n return true;\n }\n }\n return false;\n}\n/**\n * C-style quotes a filename, encoding special characters as escape sequences\n * and non-ASCII bytes as octal escapes. This is the inverse of\n * `parseQuotedFileName` in parse.ts.\n *\n * Non-ASCII bytes are encoded as UTF-8 before being emitted as octal escapes.\n * This matches the behaviour of both Git and GNU diffutils, which always emit\n * UTF-8 octal escapes regardless of the underlying filesystem encoding (e.g.\n * Git for Windows converts from NTFS's UTF-16 to UTF-8 internally).\n *\n * If the filename doesn't need quoting, returns it as-is.\n */\nfunction quoteFileNameIfNeeded(s) {\n if (!needsQuoting(s)) {\n return s;\n }\n let result = '\"';\n const bytes = new TextEncoder().encode(s);\n let i = 0;\n while (i < bytes.length) {\n const b = bytes[i];\n // See https://en.wikipedia.org/wiki/Escape_sequences_in_C#Escape_sequences\n if (b === 0x07) {\n result += '\\\\a';\n }\n else if (b === 0x08) {\n result += '\\\\b';\n }\n else if (b === 0x09) {\n result += '\\\\t';\n }\n else if (b === 0x0a) {\n result += '\\\\n';\n }\n else if (b === 0x0b) {\n result += '\\\\v';\n }\n else if (b === 0x0c) {\n result += '\\\\f';\n }\n else if (b === 0x0d) {\n result += '\\\\r';\n }\n else if (b === 0x22) {\n result += '\\\\\"';\n }\n else if (b === 0x5c) {\n result += '\\\\\\\\';\n }\n else if (b >= 0x20 && b <= 0x7e) {\n // Just a printable ASCII character that is neither a double quote nor a\n // backslash; no need to escape it.\n result += String.fromCharCode(b);\n }\n else {\n // Either part of a non-ASCII character or a control character without a\n // special escape sequence; needs escaping as a 3-digit octal escape\n result += '\\\\' + b.toString(8).padStart(3, '0');\n }\n i++;\n }\n result += '\"';\n return result;\n}\nexport const INCLUDE_HEADERS = {\n includeIndex: true,\n includeUnderline: true,\n includeFileHeaders: true\n};\nexport const FILE_HEADERS_ONLY = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: true\n};\nexport const OMIT_HEADERS = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: false\n};\nexport function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n let optionsObj;\n if (!options) {\n optionsObj = {};\n }\n else if (typeof options === 'function') {\n optionsObj = { callback: options };\n }\n else {\n optionsObj = options;\n }\n if (typeof optionsObj.context === 'undefined') {\n optionsObj.context = 4;\n }\n // We copy this into its own variable to placate TypeScript, which thinks\n // optionsObj.context might be undefined in the callbacks below.\n const context = optionsObj.context;\n // @ts-expect-error (runtime check for something that is correctly a static type error)\n if (optionsObj.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!optionsObj.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));\n }\n else {\n const { callback } = optionsObj;\n diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {\n const patch = diffLinesResultToPatch(diff);\n // TypeScript is unhappy without the cast because it does not understand that `patch` may\n // be undefined here only if `callback` is StructuredPatchCallbackAbortable:\n callback(patch);\n } }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\ No newline at end of file\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n if (!diff) {\n return;\n }\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\n function contextLines(lines) {\n return lines.map(function (entry) { return ' ' + entry; });\n }\n const hunks = [];\n let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;\n for (let i = 0; i < diff.length; i++) {\n const current = diff[i], lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n // If we have previous context, start with that\n if (!oldRangeStart) {\n const prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n // Output our changes\n for (const line of lines) {\n curRange.push((current.added ? '+' : '-') + line);\n }\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n }\n else {\n oldLine += lines.length;\n }\n }\n else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= context * 2 && i < diff.length - 2) {\n // Overlapping\n for (const line of contextLines(lines)) {\n curRange.push(line);\n }\n }\n else {\n // end the range and output\n const contextSize = Math.min(lines.length, context);\n for (const line of contextLines(lines.slice(0, contextSize))) {\n curRange.push(line);\n }\n const hunk = {\n oldStart: oldRangeStart,\n oldLines: (oldLine - oldRangeStart + contextSize),\n newStart: newRangeStart,\n newLines: (newLine - newRangeStart + contextSize),\n lines: curRange\n };\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n }\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\ No newline at end of file\".\n for (const hunk of hunks) {\n for (let i = 0; i < hunk.lines.length; i++) {\n if (hunk.lines[i].endsWith('\\n')) {\n hunk.lines[i] = hunk.lines[i].slice(0, -1);\n }\n else {\n hunk.lines.splice(i + 1, 0, '\\\\ No newline at end of file');\n i++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName, newFileName: newFileName,\n oldHeader: oldHeader, newHeader: newHeader,\n hunks: hunks\n };\n }\n}\n/**\n * creates a unified diff patch.\n *\n * @param patch either a single structured patch object (as returned by `structuredPatch`) or an\n * array of them (as returned by `parsePatch`).\n * @param headerOptions behaves the same as the `headerOptions` option of `createTwoFilesPatch`.\n * Ignored for patches where `isGit` is `true`.\n *\n * When a patch has `isGit: true`, `formatPatch` output is changed to more closely match Git's\n * output: it emits a `diff --git` header, emits Git extended headers as appropriate based on\n * properties like `isRename`, `isCreate`, `newMode`, etc, and will omit `---`/`+++` file\n * headers for patches with no hunks (e.g. renames without content changes).\n */\nexport function formatPatch(patch, headerOptions) {\n var _a, _b, _c, _d, _e, _f;\n if (!headerOptions) {\n headerOptions = INCLUDE_HEADERS;\n }\n if (Array.isArray(patch)) {\n if (patch.length > 1 && !headerOptions.includeFileHeaders && !patch.every(p => p.isGit)) {\n throw new Error('Cannot omit file headers on a multi-file patch. '\n + '(The result would be unparseable; how would a tool trying to apply '\n + 'the patch know which changes are to which file?)');\n }\n return patch.map(p => formatPatch(p, headerOptions)).join('\\n');\n }\n const ret = [];\n // Git patches have a fixed header format (diff --git, extended headers,\n // and ---/+++ when hunks are present), so headerOptions is ignored.\n if (patch.isGit) {\n headerOptions = INCLUDE_HEADERS;\n // Emit Git-style diff --git header and extended headers.\n // Git never puts /dev/null in the \"diff --git\" line; for file\n // creations/deletions it uses the real filename on both sides.\n if (!patch.oldFileName) {\n throw new Error('oldFileName must be specified for Git patches');\n }\n if (!patch.newFileName) {\n throw new Error('newFileName must be specified for Git patches');\n }\n let gitOldName = patch.oldFileName;\n let gitNewName = patch.newFileName;\n if (patch.isCreate && gitOldName === '/dev/null') {\n gitOldName = gitNewName.replace(/^b\\//, 'a/');\n }\n else if (patch.isDelete && gitNewName === '/dev/null') {\n gitNewName = gitOldName.replace(/^a\\//, 'b/');\n }\n ret.push('diff --git ' + quoteFileNameIfNeeded(gitOldName) + ' ' + quoteFileNameIfNeeded(gitNewName));\n if (patch.isDelete) {\n ret.push('deleted file mode ' + ((_a = patch.oldMode) !== null && _a !== void 0 ? _a : '100644'));\n }\n if (patch.isCreate) {\n ret.push('new file mode ' + ((_b = patch.newMode) !== null && _b !== void 0 ? _b : '100644'));\n }\n if (patch.oldMode && patch.newMode && !patch.isDelete && !patch.isCreate) {\n ret.push('old mode ' + patch.oldMode);\n ret.push('new mode ' + patch.newMode);\n }\n if (patch.isRename) {\n ret.push('rename from ' + quoteFileNameIfNeeded(((_c = patch.oldFileName) !== null && _c !== void 0 ? _c : '').replace(/^a\\//, '')));\n ret.push('rename to ' + quoteFileNameIfNeeded(((_d = patch.newFileName) !== null && _d !== void 0 ? _d : '').replace(/^b\\//, '')));\n }\n if (patch.isCopy) {\n ret.push('copy from ' + quoteFileNameIfNeeded(((_e = patch.oldFileName) !== null && _e !== void 0 ? _e : '').replace(/^a\\//, '')));\n ret.push('copy to ' + quoteFileNameIfNeeded(((_f = patch.newFileName) !== null && _f !== void 0 ? _f : '').replace(/^b\\//, '')));\n }\n }\n else {\n if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName && patch.oldFileName !== undefined) {\n ret.push('Index: ' + patch.oldFileName);\n }\n if (headerOptions.includeUnderline) {\n ret.push('===================================================================');\n }\n }\n // Emit --- / +++ file headers. For Git patches with no hunks (e.g.\n // pure renames, mode-only changes), Git omits these, so we do too.\n const hasHunks = patch.hunks.length > 0;\n if (headerOptions.includeFileHeaders && patch.oldFileName !== undefined && patch.newFileName !== undefined\n && (!patch.isGit || hasHunks)) {\n ret.push('--- ' + quoteFileNameIfNeeded(patch.oldFileName) + (patch.oldHeader ? '\\t' + patch.oldHeader : ''));\n ret.push('+++ ' + quoteFileNameIfNeeded(patch.newFileName) + (patch.newHeader ? '\\t' + patch.newHeader : ''));\n }\n for (let i = 0; i < patch.hunks.length; i++) {\n const hunk = patch.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n const oldStart = hunk.oldLines === 0 ? hunk.oldStart - 1 : hunk.oldStart;\n const newStart = hunk.newLines === 0 ? hunk.newStart - 1 : hunk.newStart;\n ret.push('@@ -' + oldStart + ',' + hunk.oldLines\n + ' +' + newStart + ',' + hunk.newLines\n + ' @@');\n for (const line of hunk.lines) {\n ret.push(line);\n }\n }\n return ret.join('\\n') + '\\n';\n}\nexport function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (typeof options === 'function') {\n options = { callback: options };\n }\n if (!(options === null || options === void 0 ? void 0 : options.callback)) {\n const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);\n }\n else {\n const { callback } = options;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: patchObj => {\n if (!patchObj) {\n callback(undefined);\n }\n else {\n callback(formatPatch(patchObj, options.headerOptions));\n }\n } }));\n }\n}\nexport function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n const hasTrailingNl = text.endsWith('\\n');\n const result = text.split('\\n').map(line => line + '\\n');\n if (hasTrailingNl) {\n result.pop();\n }\n else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n","import { render } from \"./FileDiff.vue?vue&type=template&id=639a852a&scoped=true\"\nimport script from \"./FileDiff.vue?vue&type=script&lang=js\"\nexport * from \"./FileDiff.vue?vue&type=script&lang=js\"\n\nimport \"./FileDiff.vue?vue&type=style&index=0&id=639a852a&lang=scss&scoped=true\"\nimport \"./FileDiff.vue?vue&type=style&index=1&id=639a852a&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-639a852a\"]])\n\nexport default __exports__","import { render } from \"./YamlEditor.vue?vue&type=template&id=64e75113\"\nimport script from \"./YamlEditor.vue?vue&type=script&lang=js\"\nexport * from \"./YamlEditor.vue?vue&type=script&lang=js\"\n\nimport \"./YamlEditor.vue?vue&type=style&index=0&id=64e75113&lang=scss\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n \n {{ title }}\n * \n \n \n \n
\n\n
\n
\n \n \n
\n \n \n \n 0\"\n ref=\"value\"\n v-model:value=\"row.value\"\n :data-testid=\"`${componentTestid}-labeled-input-${idx}`\"\n :placeholder=\"valuePlaceholder\"\n :disabled=\"isView || disabled\"\n :rules=\"rules\"\n :compact=\"false\"\n :aria-label=\"a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined\"\n @paste=\"onPaste(idx, $event)\"\n @update:value=\"queueUpdate\"\n />\n \n \n
\n \n
\n remove(row, idx)\"\n :i=\"idx\"\n :row=\"row\"\n >\n \n {{ _removeLabel }}\n \n \n
\n
\n
\n \n
\n \n
\n
\n \n\n\n","import { render } from \"./ArrayList.vue?vue&type=template&id=5002fd75&scoped=true\"\nimport script from \"./ArrayList.vue?vue&type=script&lang=js\"\nexport * from \"./ArrayList.vue?vue&type=script&lang=js\"\n\nimport \"./ArrayList.vue?vue&type=style&index=0&id=5002fd75&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5002fd75\"]])\n\nexport default __exports__","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { render } from \"./ArrayListGrouped.vue?vue&type=template&id=eb1084c8\"\nimport script from \"./ArrayListGrouped.vue?vue&type=script&lang=js\"\nexport * from \"./ArrayListGrouped.vue?vue&type=script&lang=js\"\n\nimport \"./ArrayListGrouped.vue?vue&type=style&index=0&id=eb1084c8&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n {{ label }} \n \n \n \n","import { render } from \"./FileSelector.vue?vue&type=template&id=124ecd6a\"\nimport script from \"./FileSelector.vue?vue&type=script&lang=js\"\nexport * from \"./FileSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, renderSlot as _renderSlot, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { class: \"buttons\" }\nconst _hoisted_3 = { class: \"left\" }\nconst _hoisted_4 = { class: \"right\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Banner = _resolveComponent(\"Banner\")!\n const _component_t = _resolveComponent(\"t\")!\n const _component_AsyncButton = _resolveComponent(\"AsyncButton\")!\n\n return (!_ctx.isView)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _cache[1] || (_cache[1] = _createElementVNode(\"div\", { class: \"spacer-small\" }, null, -1)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.errors, (err, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: idx }, [\n _createVNode(_component_Banner, {\n color: \"error\",\n label: err,\n closable: true,\n onClose: ($event: any) => (_ctx.closeError(idx))\n }, null, 8, [\"label\", \"onClose\"])\n ]))\n }), 128)),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"left\")\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"cancel\", {}, () => [\n _createElementVNode(\"button\", {\n type: \"button\",\n class: \"btn role-secondary\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.done && _ctx.done(...args)))\n }, [\n _createVNode(_component_t, { k: \"generic.cancel\" })\n ])\n ]),\n _renderSlot(_ctx.$slots, \"middle\"),\n _renderSlot(_ctx.$slots, \"save\", {}, () => [\n (!_ctx.isView)\n ? (_openBlock(), _createBlock(_component_AsyncButton, {\n key: 0,\n mode: _ctx.mode,\n disabled: _ctx.disableSave,\n onClick: _ctx.save\n }, null, 8, [\"mode\", \"disabled\", \"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _renderSlot(_ctx.$slots, \"right\")\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","\n\n \n \n\n\n","import { render } from \"./Footer.vue?vue&type=template&id=2b5fc646&ts=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=2b5fc646&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n \n {{ label }} \n\n * \n \n
\n
getOptionLabel(opt)\"\n :label=\"optionLabel\"\n :options=\"_options\"\n :map-keydown=\"mappedKeys\"\n :placeholder=\"placeholder\"\n :reduce=\"(x) => reduce(x)\"\n :filterable=\"isFilterable\"\n :searchable=\"isSearchable\"\n :selectable=\"selectable\"\n :modelValue=\"value != null && !loading ? value : ''\"\n :dropdown-should-open=\"dropdownShouldOpen\"\n :tabindex=\"-1\"\n :uid=\"generatedUid\"\n :aria-label=\"`- ${value}`\"\n @update:modelValue=\"$emit('selecting', $event); $emit('update:value', $event)\"\n @search:blur=\"onBlur\"\n @search:focus=\"onFocus\"\n @search=\"onSearch\"\n @open=\"onOpen\"\n @close=\"onClose\"\n @option:selecting=\"closeOnSelecting\"\n @option:selected=\"close\"\n @option:deselecting=\"$emit('deselecting', $event)\"\n @keydown.enter.stop\n >\n \n \n \n {{ t('labeledSelect.pressEnter', {input:getOptionLabel(option.label)}) }}\n
\n \n \n \n
\n
{{ getOptionLabel(option) }} \n
\n {{ option.badge }}\n
\n
\n \n \n \n \n \n \n {{ option.label }}\n
\n \n \n {{ getOptionLabel(option) }}\n \n
\n \n \n \n \n \n\n \n 1\"\n class=\"pagination-slot\"\n >\n
\n\n
\n {{ optionCounts }}\n
\n
\n \n \n \n
\n {{ t('labeledSelect.startTyping') }} \n \n
\n \n
\n
\n {{ t('labelSelect.noOptions.noMatch') }}\n \n
\n {{ t(noOptionsLabelKey) }}\n \n
\n \n \n
\n
\n
\n
\n \n\n\n","\nexport default {\n props: {\n compact: {\n type: Boolean,\n default: null\n },\n label: {\n type: String,\n default: null\n },\n\n labelKey: {\n type: String,\n default: null\n },\n },\n\n computed: {\n isCompact(): boolean {\n // Compact if explicitly set - otherwise compact if there is no label\n return this.compact !== null ? this.compact : !(this.label || this.labelKey);\n }\n }\n};\n","/**\n * composable to provide pagination support to LabeledSelect\n */\nimport {\n ref, computed, onMounted, ComputedRef, Ref, PropType\n} from 'vue';\nimport { useStore } from 'vuex';\nimport { debounce } from 'lodash';\nimport { LabelSelectPaginateFn, LABEL_SELECT_NOT_OPTION_KINDS, LABEL_SELECT_KINDS } from '@shell/types/components/labeledSelect';\n\ninterface LabeledSelectPaginationProps {\n paginate?: LabelSelectPaginateFn | null;\n inStore?: string;\n resourceType?: string | null;\n options?: Array;\n}\n\ninterface UseLabeledSelectPagination {\n canPaginate: ComputedRef;\n canLoadMore: ComputedRef;\n optionCounts: ComputedRef;\n _options: ComputedRef;\n pages: Ref;\n totalResults: Ref;\n paginating: Ref;\n loadMore: () => void;\n setPaginationFilter: (filter: string) => void;\n}\n\nexport const labeledSelectPaginationProps = {\n paginate: {\n default: null,\n type: Function as PropType,\n },\n\n inStore: {\n type: String,\n default: 'cluster',\n },\n\n /**\n * Resource to show\n */\n resourceType: {\n type: String,\n default: null,\n },\n};\n\nexport const useLabeledSelectPagination = (props: LabeledSelectPaginationProps): UseLabeledSelectPagination => {\n const store = useStore();\n\n // Internal\n const currentPage = ref(1);\n const search = ref('');\n const pageSize = ref(10);\n const pages = ref(0);\n\n // External\n const page = ref([]);\n const totalResults = ref(0);\n const paginating = ref(false);\n\n const canPaginate = computed(() => {\n return !!props.paginate && !!props.resourceType && store.getters[`${ props.inStore }/paginationEnabled`](props.resourceType);\n });\n\n const _options = computed(() => canPaginate.value ? page.value : (props.options || []));\n\n const canLoadMore = computed(() => pages.value > currentPage.value);\n\n const optionsInPage = computed(() => {\n // Number of genuine options (not groups, dividers, etc)\n return canPaginate.value ? _options.value.filter((o: any) => {\n return o.kind !== LABEL_SELECT_KINDS.NONE && !LABEL_SELECT_NOT_OPTION_KINDS.includes(o.kind);\n }).length : 0;\n });\n\n const optionCounts = computed(() => {\n if (!canPaginate.value || optionsInPage.value === totalResults.value) {\n return '';\n }\n\n return store.getters['i18n/t']('labelSelect.pagination.counts', {\n count: optionsInPage.value,\n totalCount: totalResults.value\n });\n });\n\n const requestPagination = async(resetPage = false) => {\n paginating.value = true;\n\n const { page: p, pages: pg, total } = await (props.paginate as LabelSelectPaginateFn)({\n resetPage,\n pageContent: page.value || [],\n page: currentPage.value,\n filter: search.value,\n pageSize: pageSize.value,\n });\n\n page.value = p;\n pages.value = pg || 0;\n totalResults.value = total || 0;\n paginating.value = false;\n };\n\n const debouncedRequestPagination = debounce(requestPagination, 700);\n\n const setPaginationFilter = (filter: string) => {\n paginating.value = true; // Do this before debounce\n currentPage.value = 1;\n search.value = filter;\n debouncedRequestPagination(true);\n };\n\n const loadMore = () => {\n currentPage.value++;\n requestPagination();\n };\n\n onMounted(async() => {\n if (canPaginate.value) {\n await requestPagination();\n }\n });\n\n return {\n canPaginate,\n canLoadMore,\n optionCounts,\n _options,\n pages,\n totalResults,\n paginating,\n loadMore,\n setPaginationFilter,\n };\n};\n","import { render } from \"./LabeledSelect.vue?vue&type=template&id=cf799680&scoped=true\"\nimport script from \"./LabeledSelect.vue?vue&type=script&lang=js\"\nexport * from \"./LabeledSelect.vue?vue&type=script&lang=js\"\n\nimport \"./LabeledSelect.vue?vue&type=style&index=0&id=cf799680&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cf799680\"]])\n\nexport default __exports__","import { normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, renderSlot as _renderSlot, resolveComponent as _resolveComponent, mergeProps as _mergeProps, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LabeledSelect = _resolveComponent(\"LabeledSelect\")!\n\n return (_openBlock(), _createBlock(_component_LabeledSelect, _mergeProps(_ctx.labelSelectAttributes, {\n loading: _ctx.$fetchState.pending,\n options: _ctx.allOfType,\n paginate: _ctx.paginateType,\n multiple: _ctx.$attrs.multiple || false,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('update:value', $event)))\n }), _createSlots({ _: 2 }, [\n _renderList(_ctx.$slots, (_, slot) => {\n return {\n name: slot,\n fn: _withCtx((scope) => [\n _renderSlot(_ctx.$slots, slot, _normalizeProps(_guardReactiveProps(scope)))\n ])\n }\n })\n ]), 1040, [\"loading\", \"options\", \"paginate\", \"multiple\"]))\n}","\n\n\n \n \n \n \n \n \n","import { LabelSelectPaginationFunctionOptions } from '@shell/components/form/labeled-select-utils/labeled-select.utils';\nimport { LabelSelectPaginateFn } from '@shell/types/components/labeledSelect';\n\ntype PaginateTypeOverridesFn = (opts: LabelSelectPaginationFunctionOptions) => LabelSelectPaginationFunctionOptions;\n\ninterface SharedSettings {\n /**\n * Provide specific LabelSelect options for this mode (paginated / not paginated)\n */\n labelSelectOptions?: { [key: string]: any },\n /**\n * Map, filter, tweak, etc the resources to show in the LabelSelect\n */\n updateResources?: (resources: any[]) => any[]\n}\n\n/**\n * Settings to use when the LabelSelect is paginating\n */\nexport interface ResourceLabeledSelectPaginateSettings extends SharedSettings {\n /**\n * Override the convenience function which fetches a page of results\n */\n overrideRequest?: LabelSelectPaginateFn,\n /**\n * Override the default settings used in the convenience function to fetch a page of results\n */\n requestSettings?: PaginateTypeOverridesFn,\n}\n\n/**\n * Settings to use when the LabelSelect is fetching all resources (not paginating)\n */\nexport type ResourceLabeledSelectSettings = SharedSettings\n\n/**\n * Force a specific mode\n */\nexport enum RESOURCE_LABEL_SELECT_MODE {\n /**\n * Fetch all resources\n */\n ALL_RESOURCES = 'ALL', // eslint-disable-line no-unused-vars\n /**\n * Determine if all resources are fetched given system settings\n */\n DYNAMIC = 'DYNAMIC', // eslint-disable-line no-unused-vars\n}\n","import { LabelSelectPaginateFnOptions, LabelSelectPaginateFnResponse } from '@shell/types/components/labeledSelect';\nimport { PaginationArgs, PaginationParam, PaginationSort } from '@shell/types/store/pagination.types';\n\nexport interface LabelSelectPaginationFunctionOptions {\n opts: LabelSelectPaginateFnOptions,\n /**\n * Resource type\n */\n type: string,\n /**\n * Store things\n */\n ctx: { getters: any, dispatch: any}\n /**\n * Filters to apply. This mostly covers the text a user has entered, but could be other things like namespace\n */\n filters?: PaginationParam[],\n /**\n * How to sort the response\n */\n sort?: PaginationSort[],\n /**\n * Vuex store name\n */\n store?: string,\n /**\n * True if the options returned should be grouped by namespace\n */\n groupByNamespace?: boolean,\n\n /**\n * Convert the results from JSON object to Rancher model class instance\n */\n classify?: boolean,\n}\n\n/**\n * This is a helper function to cover common functionality that could happen when a LabelSelect requests a new page\n */\nexport async function labelSelectPaginationFunction({\n opts,\n type,\n ctx,\n filters = [],\n sort = [{ asc: true, field: 'metadata.namespace' }, { asc: true, field: 'metadata.name' }],\n store = 'cluster',\n groupByNamespace = true,\n classify = false,\n}: LabelSelectPaginationFunctionOptions): Promise> {\n const {\n pageContent, page, pageSize, resetPage\n } = opts;\n\n try {\n // Construct params for request\n\n const pagination = new PaginationArgs({\n page,\n pageSize,\n sort,\n filters\n });\n const url = ctx.getters[`${ store }/urlFor`](type, null, { pagination });\n // Make request (note we're not bothering to persist anything to the store, response is transient)\n const res = await ctx.dispatch(`${ store }/request`, { url });\n let data = res.data;\n\n if (classify) {\n data = await ctx.dispatch('cluster/createMany', data);\n }\n\n const options = resetPage ? data : pageContent.concat(data);\n\n // Create the new option collection by...\n let resPage: any[];\n\n if (groupByNamespace) {\n // ... grouping by namespace\n const namespaced: { [ns: string]: T[]} = {};\n\n options.forEach((option: any) => {\n const ns = option.metadata.namespace;\n\n if (option.kind === 'group') { // this could contain a previous option set which contains groups\n return;\n }\n if (!namespaced[ns]) {\n namespaced[ns] = [];\n }\n namespaced[ns].push(option);\n });\n\n resPage = [];\n\n // ... then sort groups by name and combined into a single array\n Object.keys(namespaced).sort().forEach((ns) => {\n resPage.push({\n kind: 'group',\n icon: 'icon-namespace',\n id: ns,\n metadata: { name: ns },\n disabled: true,\n });\n resPage = resPage.concat(namespaced[ns]);\n });\n } else {\n resPage = options;\n }\n\n return {\n page: resPage,\n pages: res.pages || Math.ceil(res.count / (pageSize || Number.MAX_SAFE_INTEGER)),\n total: res.count\n };\n } catch (err) {\n console.error(err); // eslint-disable-line no-console\n }\n\n return {\n page: [], pages: 0, total: 0\n };\n}\n","import { render } from \"./ResourceLabeledSelect.vue?vue&type=template&id=6b1285e6&ts=true\"\nimport script from \"./ResourceLabeledSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./ResourceLabeledSelect.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
getOptionKey(opt)\"\n :get-option-label=\"(opt) => getOptionLabel(opt)\"\n :label=\"optionLabel\"\n :options=\"options\"\n :close-on-select=\"false\"\n :map-keydown=\"mappedKeys\"\n :placeholder=\"placeholder\"\n :reduce=\"(x) => reduce(x)\"\n :searchable=\"isSearchable\"\n :selectable=\"selectable\"\n :modelValue=\"value != null ? value : ''\"\n :dropdownShouldOpen=\"handleDropdownOpen\"\n :tabindex=\"-1\"\n role=\"listitem\"\n :uid=\"generatedUid\"\n :aria-label=\"'-'\"\n @update:modelValue=\"$emit('update:value', $event)\"\n @search:blur=\"onBlur\"\n @search:focus=\"onFocus\"\n @open=\"onOpen\"\n @close=\"onClose\"\n @option:created=\"(e) => $emit('createdListItem', e)\"\n @option:selecting=\"closeOnSelecting\"\n @option:selected=\"closeOnSelect && close\"\n @keydown.enter.stop\n >\n \n \n {{ getOptionLabel(option.label) }}\n
\n \n \n \n \n \n \n
\n
\n
\n \n\n\n","import { render } from \"./Select.vue?vue&type=template&id=7aa56fc4&scoped=true\"\nimport script from \"./Select.vue?vue&type=script&lang=js\"\nexport * from \"./Select.vue?vue&type=script&lang=js\"\n\nimport \"./Select.vue?vue&type=style&index=0&id=7aa56fc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aa56fc4\"]])\n\nexport default __exports__","\n\n\n \n \n\n\n","import { render } from \"./SimpleSecretSelector.vue?vue&type=template&id=050f317b\"\nimport script from \"./SimpleSecretSelector.vue?vue&type=script&lang=js\"\nexport * from \"./SimpleSecretSelector.vue?vue&type=script&lang=js\"\n\nimport \"./SimpleSecretSelector.vue?vue&type=style&index=0&id=050f317b&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n \n \n {{ displayUnit }}\n
\n \n \n \n\n\n","import { render } from \"./UnitInput.vue?vue&type=template&id=e5242b74&scoped=true\"\nimport script from \"./UnitInput.vue?vue&type=script&lang=js\"\nexport * from \"./UnitInput.vue?vue&type=script&lang=js\"\n\nimport \"./UnitInput.vue?vue&type=style&index=0&id=e5242b74&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e5242b74\"]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t('monitoring.receiver.tls.label') }} \r\n \r\n
\r\n
\r\n \r\n \r\n {{ t(\"alertmanagerConfigReceiver.namespaceWarning\") }}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n {{ t(\"alertmanagerConfigReceiver.namespaceWarning\") }}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n {{ t(\"alertmanagerConfigReceiver.namespaceWarning\") }}\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n","import { render } from \"./tls.vue?vue&type=template&id=674ad289\"\nimport script from \"./tls.vue?vue&type=script&lang=js\"\nexport * from \"./tls.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n SMTP\n \n
\n
\n
\n
\n \n \n {{ t('alertmanagerConfigReceiver.namespaceWarning') }}\n \n
\n
\n
\n \n","import { render } from \"./email.vue?vue&type=template&id=f828b74c\"\nimport script from \"./email.vue?vue&type=script&lang=js\"\nexport * from \"./email.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n \n {{ t('alertmanagerConfigReceiver.namespaceWarning') }}\n \n
\n
\n
\n \n
\n
\n
\n
Responders \n
\n \n \n
\n
\n Type \n
\n
\n Send To \n
\n
\n
\n \n \n \n
\n {{ typeLabel(scope.row.value.type) }} \n \n
\n
\n {{ targetLabel(scope.row.value.target) }}: {{ scope.row.value.value }} \n \n
\n
\n \n \n
\n
\n
\n \n\n\n","\n\n\n \n ({ label: name, value: name })\"\n :multiple=\"false\"\n :mode=\"mode\"\n :option-label=\"optionLabel\"\n :placement=\"$attrs.placement ? $attrs.placement : null\"\n :v-bind=\"$attrs\"\n :rules=\"selectRules\"\n @update:value=\"change\"\n />\n ({ label: name, value: name })\"\n :multiple=\"false\"\n :mode=\"mode\"\n :option-label=\"optionLabel\"\n :placement=\"$attrs.placement ? $attrs.placement : null\"\n :v-bind=\"$attrs\"\n @update:value=\"change\"\n />\n 0\"\n ref=\"text\"\n v-model:value=\"string\"\n class=\"input-string col span-8\"\n :label=\"textLabel\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled || textDisabled\"\n :required=\"textRequired\"\n :mode=\"mode\"\n :rules=\"textRules\"\n v-bind=\"$attrs\"\n @update:value=\"change\"\n >\n \n \n \n \n \n \n \n \n
\n \n\n\n","import { render } from \"./InputWithSelect.vue?vue&type=template&id=6f50f528&scoped=true\"\nimport script from \"./InputWithSelect.vue?vue&type=script&lang=js\"\nexport * from \"./InputWithSelect.vue?vue&type=script&lang=js\"\n\nimport \"./InputWithSelect.vue?vue&type=style&index=0&id=6f50f528&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6f50f528\"]])\n\nexport default __exports__","import { render } from \"./opsgenie.vue?vue&type=template&id=174af1a6&scoped=true\"\nimport script from \"./opsgenie.vue?vue&type=script&lang=js\"\nexport * from \"./opsgenie.vue?vue&type=script&lang=js\"\n\nimport \"./opsgenie.vue?vue&type=style&index=0&id=174af1a6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-174af1a6\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n\n
\n \n \n
\n
\n {{ t('alertmanagerConfigReceiver.namespaceWarning') }}\n \n\n
\n
\n \n
\n
\n \n","import { render } from \"./pagerduty.vue?vue&type=template&id=fb6bb65c\"\nimport script from \"./pagerduty.vue?vue&type=script&lang=js\"\nexport * from \"./pagerduty.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n
\n
\n {{ t('alertmanagerConfigReceiver.namespaceWarning') }}\n \n
\n \n
\n
\n
\n
\n \n
\n
\n \n","import { render } from \"./slack.vue?vue&type=template&id=c7b7c80e\"\nimport script from \"./slack.vue?vue&type=script&lang=js\"\nexport * from \"./slack.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{ t('alertmanagerConfigReceiver.namespaceWarning') }}\n \n
\n
\n
\n \n
\n
\n
\n
\n \n","\r\n\r\n\r\n \r\n
\r\n
\r\n
{{ t(\"monitoringReceiver.auth.label\") }} \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {{ t(\"alertmanagerConfigReceiver.namespaceWarning\") }}\r\n \r\n
\r\n
\r\n \r\n \r\n {{ t(\"alertmanagerConfigReceiver.namespaceWarning\") }}\r\n \r\n
\r\n
\r\n \r\n \r\n {{ t(\"alertmanagerConfigReceiver.namespaceWarning\") }}\r\n \r\n
\r\n
\r\n \r\n","import { render } from \"./auth.vue?vue&type=template&id=a9bc61c4\"\nimport script from \"./auth.vue?vue&type=script&lang=js\"\nexport * from \"./auth.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./webhook.vue?vue&type=template&id=53458bdb\"\nimport script from \"./webhook.vue?vue&type=script&lang=js\"\nexport * from \"./webhook.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('promptRemove.attemptingToRemove', { type }) }} \n
\n
\n \n \n
\n
\n \n\n\n","import { render } from \"./management.cattle.io.fleetworkspace.vue?vue&type=template&id=07ec0ff4&scoped=true\"\nimport script from \"./management.cattle.io.fleetworkspace.vue?vue&type=script&lang=js\"\nexport * from \"./management.cattle.io.fleetworkspace.vue?vue&type=script&lang=js\"\n\nimport \"./management.cattle.io.fleetworkspace.vue?vue&type=style&index=0&id=07ec0ff4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-07ec0ff4\"]])\n\nexport default __exports__","\n\n\n \n {{ t('promptRemove.attemptingToRemove', { type }) }}
\n
\n \n
\n
\n {{ warning }}\n
\n
\n \n\n\n","import { render } from \"./management.cattle.io.globalrole.vue?vue&type=template&id=7155ccc2&scoped=true\"\nimport script from \"./management.cattle.io.globalrole.vue?vue&type=script&lang=js\"\nexport * from \"./management.cattle.io.globalrole.vue?vue&type=script&lang=js\"\n\nimport \"./management.cattle.io.globalrole.vue?vue&type=style&index=0&id=7155ccc2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7155ccc2\"]])\n\nexport default __exports__","\n\n\n \n
\n
\n {{ t('promptRemove.attemptingToRemove', { type }) }}
{{ `${displayName}.` }} \n
\n {{ t('promptRemove.willDeleteAssociatedNamespaces') }} \n
\n \n
\n
0 && canSeeProjectlessNamespaces\"\n class=\"mt-20 remove-project-dialog\"\n >\n
\n
\n \n
\n
\n
\n
\n \n\n\n","import { render } from \"./management.cattle.io.project.vue?vue&type=template&id=017c9f08&scoped=true\"\nimport script from \"./management.cattle.io.project.vue?vue&type=script&lang=js\"\nexport * from \"./management.cattle.io.project.vue?vue&type=script&lang=js\"\n\nimport \"./management.cattle.io.project.vue?vue&type=style&index=0&id=017c9f08&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-017c9f08\"]])\n\nexport default __exports__","\n\n\n \n {{ t('promptRemove.attemptingToRemove', { type }) }}
\n
\n \n
\n
\n {{ warning }}\n
\n
\n \n\n\n","import { render } from \"./management.cattle.io.roletemplate.vue?vue&type=template&id=224f553f&scoped=true\"\nimport script from \"./management.cattle.io.roletemplate.vue?vue&type=script&lang=js\"\nexport * from \"./management.cattle.io.roletemplate.vue?vue&type=script&lang=js\"\n\nimport \"./management.cattle.io.roletemplate.vue?vue&type=style&index=0&id=224f553f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-224f553f\"]])\n\nexport default __exports__","\n\n\n \n
\n {{ t('promptRemove.attemptingToRemove', { type }) }} \n
\n
\n \n
\n
\n
\n
\n \n\n\n","import { render } from \"./pod.vue?vue&type=template&id=44bed663&scoped=true\"\nimport script from \"./pod.vue?vue&type=script&lang=js\"\nexport * from \"./pod.vue?vue&type=script&lang=js\"\n\nimport \"./pod.vue?vue&type=style&index=0&id=44bed663&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44bed663\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderSlot as _renderSlot } from \"vue\"\n\nconst _hoisted_1 = { class: \"msg\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass(['badge-state', _ctx.bg])\n }, [\n (_ctx.icon)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass([\"icon\", {[_ctx.icon]: true, 'mr-5': !!_ctx.msg}])\n }, null, 2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(_ctx.msg), 1),\n _renderSlot(_ctx.$slots, \"content-right\", {}, undefined, true)\n ], 2))\n}","\n\n\n \n \n {{ msg }} \n \n \n \n\n\n\n","import { render } from \"./BadgeState.vue?vue&type=template&id=544b3117&scoped=true&ts=true\"\nimport script from \"./BadgeState.vue?vue&type=script&lang=ts\"\nexport * from \"./BadgeState.vue?vue&type=script&lang=ts\"\n\nimport \"./BadgeState.vue?vue&type=style&index=0&id=544b3117&lang=scss&scoped=true\"\nimport \"./BadgeState.vue?vue&type=style&index=1&id=544b3117&lang=scss\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-544b3117\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, resolveComponent as _resolveComponent, createBlock as _createBlock, toDisplayString as _toDisplayString, resolveDirective as _resolveDirective, withDirectives as _withDirectives, withKeys as _withKeys } from \"vue\"\n\nconst _hoisted_1 = [\"aria-labelledby\"]\nconst _hoisted_2 = {\n key: 0,\n class: \"banner__icon\",\n \"data-testid\": \"banner-icon\"\n}\nconst _hoisted_3 = [\"alt\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = { key: 1 }\nconst _hoisted_6 = { key: 2 }\nconst _hoisted_7 = [\"aria-label\"]\nconst _hoisted_8 = [\"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _directive_clean_html = _resolveDirective(\"clean-html\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"banner\", {\n [_ctx.color]: true,\n 'banner-disabled': _ctx.disabled\n }]),\n role: \"region\",\n \"aria-labelledby\": _ctx.labelledbyId,\n tabindex: \"0\"\n }, [\n (_ctx.icon)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"icon icon-2x\", _ctx.icon]),\n alt: _ctx.t('generic.banners.bannerIcon')\n }, null, 10, _hoisted_3)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n id: _ctx.labelledbyId,\n class: _normalizeClass([\"banner__content\", {\n closable: _ctx.closable,\n stacked: _ctx.stacked,\n icon: _ctx.icon\n }]),\n \"data-testid\": \"banner-content\"\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n (_ctx.labelKey)\n ? (_openBlock(), _createBlock(_component_t, {\n key: 0,\n k: _ctx.labelKey,\n raw: true\n }, null, 8, [\"k\"]))\n : (_ctx.messageLabel)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString(_ctx.messageLabel), 1))\n : _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_6, null, 512)), [\n [_directive_clean_html, _ctx.nlToBr(_ctx.label)]\n ])\n ], true),\n (_ctx.closable)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"banner__content__closer\",\n tabindex: \"0\",\n role: \"button\",\n \"aria-label\": _ctx.t('generic.close'),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('close'))),\n onKeyup: [\n _cache[1] || (_cache[1] = _withKeys(($event: any) => (_ctx.$emit('close')), [\"enter\"])),\n _cache[2] || (_cache[2] = _withKeys(($event: any) => (_ctx.$emit('close')), [\"space\"]))\n ]\n }, [\n _createElementVNode(\"i\", {\n \"data-testid\": \"banner-close\",\n class: \"icon icon-close closer-icon\",\n alt: _ctx.t('generic.banners.altCloseBanner')\n }, null, 8, _hoisted_8)\n ], 40, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_4)\n ], 10, _hoisted_1))\n}","\n\n \n
\n \n
\n
\n
\n \n {{ messageLabel }} \n \n \n
\n \n
\n
\n
\n \n\n\n","import { render } from \"./Banner.vue?vue&type=template&id=79a84b17&scoped=true&ts=true\"\nimport script from \"./Banner.vue?vue&type=script&lang=ts\"\nexport * from \"./Banner.vue?vue&type=script&lang=ts\"\n\nimport \"./Banner.vue?vue&type=style&index=0&id=79a84b17&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-79a84b17\"]])\n\nexport default __exports__","import { withModifiers as _withModifiers, withKeys as _withKeys, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, renderSlot as _renderSlot, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"checked\", \"value\"]\nconst _hoisted_2 = [\"tabindex\", \"aria-disabled\", \"aria-label\", \"aria-checked\", \"aria-labelledby\", \"aria-describedby\"]\nconst _hoisted_3 = [\"id\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = [\"data-testid\", \"tabindex\"]\nconst _hoisted_6 = [\"data-testid\", \"tabindex\"]\nconst _hoisted_7 = {\n key: 0,\n class: \"checkbox-outer-container-description\"\n}\nconst _hoisted_8 = [\"id\"]\nconst _hoisted_9 = { class: \"checkbox-outer-container-extra\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _directive_clean_tooltip = _resolveDirective(\"clean-tooltip\")!\n const _directive_stripped_aria_label = _resolveDirective(\"stripped-aria-label\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"checkbox-outer-container\", {\n 'has-clean-tooltip': _ctx.hasTooltip,\n }]),\n \"data-checkbox-ctrl\": \"\"\n }, [\n _createElementVNode(\"label\", {\n class: _normalizeClass([\"checkbox-container\", { 'disabled': _ctx.isDisabled}]),\n onKeydown: [\n _cache[2] || (_cache[2] = _withKeys(_withModifiers(($event: any) => (_ctx.clicked($event)), [\"prevent\"]), [\"enter\"])),\n _cache[3] || (_cache[3] = _withKeys(_withModifiers(($event: any) => (_ctx.clicked($event)), [\"prevent\"]), [\"space\"]))\n ],\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.clicked($event)))\n }, [\n _createElementVNode(\"input\", {\n id: _ctx.id,\n checked: _ctx.isChecked,\n value: _ctx.valueWhenTrue,\n type: \"checkbox\",\n tabindex: \"-1\",\n \"aria-hidden\": \"true\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\",\"prevent\"])),\n onKeyup: _cache[1] || (_cache[1] = _withKeys(_withModifiers(() => {}, [\"stop\",\"prevent\"]), [\"enter\"]))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"span\", {\n ref: \"checkbox\",\n class: _normalizeClass([\"checkbox-custom\", {indeterminate: _ctx.indeterminate}]),\n tabindex: _ctx.isDisabled ? -1 : 0,\n \"aria-disabled\": _ctx.isDisabled,\n \"aria-label\": _ctx.replacementLabel,\n \"aria-checked\": !!_ctx.value,\n \"aria-labelledby\": _ctx.labelKey || _ctx.label ? _ctx.idForLabel : undefined,\n \"aria-describedby\": _ctx.ariaDescribedBy,\n role: \"checkbox\"\n }, null, 10, _hoisted_2),\n (_ctx.$slots.label || _ctx.label || _ctx.labelKey || _ctx.hasTooltip)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"checkbox-label\", { 'checkbox-primary': _ctx.primary }])\n }, [\n _renderSlot(_ctx.$slots, \"label\", {}, () => [\n (_ctx.labelKey)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n id: _ctx.idForLabel\n }, [\n _createVNode(_component_t, {\n k: _ctx.labelKey,\n raw: true\n }, null, 8, [\"k\"])\n ], 8, _hoisted_3))\n : (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n id: _ctx.idForLabel\n }, _toDisplayString(_ctx.label), 9, _hoisted_4))\n : _createCommentVNode(\"\", true),\n (_ctx.tooltipKey)\n ? _withDirectives((_openBlock(), _createElementBlock(\"i\", {\n key: 2,\n class: \"checkbox-info icon icon-info icon-lg\",\n \"data-testid\": _ctx.componentTestid + '-info-icon',\n tabindex: _ctx.isDisabled ? -1 : 0,\n role: \"tooltip\"\n }, null, 8, _hoisted_5)), [\n [_directive_clean_tooltip, {content: _ctx.t(_ctx.tooltipKey), triggers: ['hover', 'touch', 'focus']}],\n [_directive_stripped_aria_label, _ctx.t(_ctx.tooltipKey)]\n ])\n : (_ctx.tooltip)\n ? _withDirectives((_openBlock(), _createElementBlock(\"i\", {\n key: 3,\n class: \"checkbox-info icon icon-info icon-lg\",\n \"data-testid\": _ctx.componentTestid + '-info-icon',\n tabindex: _ctx.isDisabled ? -1 : 0,\n role: \"tooltip\"\n }, null, 8, _hoisted_6)), [\n [_directive_clean_tooltip, {content: _ctx.tooltip, triggers: ['hover', 'touch', 'focus']}],\n [_directive_stripped_aria_label, _ctx.tooltip]\n ])\n : _createCommentVNode(\"\", true)\n ], true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 34),\n (_ctx.descriptionKey || _ctx.description)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (_ctx.descriptionKey)\n ? (_openBlock(), _createBlock(_component_t, {\n key: 0,\n id: _ctx.describedById,\n k: _ctx.descriptionKey\n }, null, 8, [\"id\", \"k\"]))\n : (_ctx.description)\n ? (_openBlock(), _createElementBlock(\"p\", {\n key: 1,\n id: _ctx.describedById\n }, _toDisplayString(_ctx.description), 9, _hoisted_8))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _renderSlot(_ctx.$slots, \"extra\", {}, undefined, true)\n ])\n ], 2))\n}","\n\n\n \n
\n \n \n \n \n \n \n \n {{ label }} \n \n \n \n \n \n
\n
\n
\n \n {{ description }}\n
\n \n
\n \n
\n \n\n\n","import { render } from \"./Checkbox.vue?vue&type=template&id=5376b6f7&scoped=true&ts=true\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=ts\"\n\nimport \"./Checkbox.vue?vue&type=style&index=0&id=5376b6f7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5376b6f7\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, mergeProps as _mergeProps, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = [\"for\"]\nconst _hoisted_2 = {\n key: 2,\n class: \"required\",\n \"aria-hidden\": true\n}\nconst _hoisted_3 = [\"id\", \"role\", \"name\", \"maxlength\", \"disabled\", \"aria-disabled\", \"type\", \"value\", \"placeholder\", \"data-lpignore\", \"aria-describedby\", \"aria-required\"]\nconst _hoisted_4 = {\n key: 2,\n class: \"sub-label\",\n \"data-testid\": \"sub-label\"\n}\nconst _hoisted_5 = [\"id\", \"aria-label\"]\nconst _hoisted_6 = [\"id\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _component_TextAreaAutoGrow = _resolveComponent(\"TextAreaAutoGrow\")!\n const _component_LabeledTooltip = _resolveComponent(\"LabeledTooltip\")!\n const _directive_stripped_aria_label = _resolveDirective(\"stripped-aria-label\")!\n const _directive_clean_html = _resolveDirective(\"clean-html\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass({\n 'labeled-input': true,\n focused: _ctx.focused,\n [_ctx.mode]: true,\n disabled: _ctx.isDisabled,\n [_ctx.effectiveStatus]: _ctx.effectiveStatus,\n suffix: _ctx.hasSuffix,\n 'has-clean-tooltip': _ctx.hasTooltip,\n 'compact-input': _ctx.isCompact,\n hideArrows: _ctx.hideArrows,\n [_ctx.className]: true\n })\n }, [\n _renderSlot(_ctx.$slots, \"label\", {}, () => [\n (_ctx.hasLabel)\n ? (_openBlock(), _createElementBlock(\"label\", {\n key: 0,\n for: _ctx.inputId\n }, [\n (_ctx.labelKey)\n ? (_openBlock(), _createBlock(_component_t, {\n key: 0,\n k: _ctx.labelKey\n }, null, 8, [\"k\"]))\n : (_ctx.label)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.label), 1)\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.requiredField)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, \"*\"))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], true),\n _renderSlot(_ctx.$slots, \"prefix\", {}, undefined, true),\n _renderSlot(_ctx.$slots, \"field\", {}, () => [\n (_ctx.type === 'multiline' || _ctx.type === 'multiline-password')\n ? _withDirectives((_openBlock(), _createBlock(_component_TextAreaAutoGrow, _mergeProps({\n key: 0,\n id: _ctx.inputId,\n ref: \"value\"\n }, _ctx.$attrs, {\n name: _ctx.name || undefined,\n maxlength: _ctx._maxlength,\n disabled: _ctx.isDisabled,\n \"aria-disabled\": _ctx.isDisabled,\n value: _ctx.value || '',\n placeholder: _ctx._placeholder,\n autocapitalize: \"off\",\n class: { 'multiline-password': _ctx.type === 'multiline-password' },\n \"aria-describedby\": _ctx.ariaDescribedBy,\n \"aria-required\": _ctx.requiredField,\n \"onUpdate:value\": _ctx.onInput,\n onFocus: _ctx.onFocus,\n onBlur: _ctx.onBlur\n }), null, 16, [\"id\", \"name\", \"maxlength\", \"disabled\", \"aria-disabled\", \"value\", \"placeholder\", \"class\", \"aria-describedby\", \"aria-required\", \"onUpdate:value\", \"onFocus\", \"onBlur\"])), [\n [_directive_stripped_aria_label, !_ctx.hasLabel && _ctx.ariaLabel ? _ctx.ariaLabel : undefined]\n ])\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", _mergeProps({\n key: 1,\n id: _ctx.inputId,\n ref: \"value\",\n role: _ctx.type === 'number' ? undefined : 'textbox',\n class: { 'no-label': !_ctx.hasLabel }\n }, _ctx.$attrs, {\n name: _ctx.name || undefined,\n maxlength: _ctx._maxlength,\n disabled: _ctx.isDisabled,\n \"aria-disabled\": _ctx.isDisabled,\n type: _ctx.type === 'cron' ? 'text' : _ctx.type,\n value: _ctx.value,\n placeholder: _ctx._placeholder,\n autocomplete: \"off\",\n autocapitalize: \"off\",\n \"data-lpignore\": _ctx.ignorePasswordManagers,\n \"aria-describedby\": _ctx.ariaDescribedBy,\n \"aria-required\": _ctx.requiredField,\n onInput: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onInput && _ctx.onInput(...args))),\n onFocus: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.onFocus && _ctx.onFocus(...args))),\n onBlur: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onBlur && _ctx.onBlur(...args))),\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.onChange && _ctx.onChange(...args)))\n }), null, 16, _hoisted_3)), [\n [_directive_stripped_aria_label, !_ctx.hasLabel && _ctx.ariaLabel ? _ctx.ariaLabel : undefined]\n ])\n ], true),\n _renderSlot(_ctx.$slots, \"suffix\", {}, undefined, true),\n (_ctx.hasTooltip)\n ? (_openBlock(), _createBlock(_component_LabeledTooltip, {\n key: 0,\n hover: _ctx.hoverTooltip,\n value: _ctx.tooltipValue,\n status: _ctx.status\n }, null, 8, [\"hover\", \"value\", \"status\"]))\n : _createCommentVNode(\"\", true),\n (!!_ctx.validationMessage)\n ? (_openBlock(), _createBlock(_component_LabeledTooltip, {\n key: 1,\n hover: _ctx.hoverTooltip,\n value: _ctx.validationMessage\n }, null, 8, [\"hover\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.cronHint || _ctx.subLabel)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_ctx.cronHint)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n id: _ctx.describedById,\n role: \"alert\",\n \"aria-label\": _ctx.cronHint\n }, _toDisplayString(_ctx.cronHint), 9, _hoisted_5))\n : (_ctx.subLabel)\n ? _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n id: _ctx.describedById\n }, null, 8, _hoisted_6)), [\n [_directive_clean_html, _ctx.subLabel]\n ])\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\n\n\n \n
\n \n \n {{ label }} \n\n * \n \n \n\n
\n\n
\n \n \n \n\n
\n \n
\n \n
\n
\n
\n {{ cronHint }}\n
\n
\n
\n
\n \n\n\n","import { computed, ComputedRef } from 'vue';\n\ninterface CompactInputProps {\n compact?: boolean | null;\n label?: string;\n labelKey?: string;\n}\n\ninterface UseCompactInput {\n isCompact: ComputedRef;\n}\n\nexport const useCompactInput = (props: CompactInputProps): UseCompactInput => {\n const isCompact = computed(() => {\n // Compact if explicitly set - otherwise compact if there is no label\n return (props.compact !== null && props.compact !== undefined) ? !!props.compact : !(props.label || props.labelKey);\n });\n\n return { isCompact };\n};\n","import { render } from \"./LabeledInput.vue?vue&type=template&id=01188989&scoped=true&ts=true\"\nimport script from \"./LabeledInput.vue?vue&type=script&lang=ts\"\nexport * from \"./LabeledInput.vue?vue&type=script&lang=ts\"\n\nimport \"./LabeledInput.vue?vue&type=style&index=0&id=01188989&scoped=true&lang=scss\"\nimport \"./LabeledInput.vue?vue&type=style&index=1&id=01188989&lang=css\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-01188989\"]])\n\nexport default __exports__","import { withModifiers as _withModifiers, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, withKeys as _withKeys } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"disabled\", \"name\", \"value\", \"data-testid\", \"checked\"]\nconst _hoisted_2 = [\"id\", \"tabindex\", \"aria-label\", \"aria-checked\", \"aria-disabled\", \"aria-describedby\"]\nconst _hoisted_3 = { class: \"labeling\" }\nconst _hoisted_4 = [\"for\"]\nconst _hoisted_5 = { key: 1 }\nconst _hoisted_6 = [\"id\"]\nconst _hoisted_7 = {\n key: 1,\n class: \"radio-button-outer-container-description\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _directive_clean_html = _resolveDirective(\"clean-html\")!\n\n return (_openBlock(), _createElementBlock(\"label\", {\n class: _normalizeClass({\n 'disabled': _ctx.isDisabled,\n 'radio-container': true,\n 'radio-button-checked': _ctx.isChecked\n }),\n onKeydown: [\n _cache[1] || (_cache[1] = _withKeys(($event: any) => (_ctx.clicked($event)), [\"enter\"])),\n _cache[2] || (_cache[2] = _withKeys(($event: any) => (_ctx.clicked($event)), [\"space\"]))\n ],\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.clicked($event)), [\"stop\"]))\n }, [\n _createElementVNode(\"input\", {\n id: _ctx.randomString,\n disabled: _ctx.isDisabled,\n name: _ctx.name,\n value: ''+_ctx.val,\n \"data-testid\": _ctx.label,\n checked: _ctx.isChecked,\n type: \"radio\",\n tabindex: -1,\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, null, 8, _hoisted_1),\n _createElementVNode(\"span\", {\n id: _ctx.radioOptionId,\n ref: \"custom\",\n class: _normalizeClass([ _ctx.isDisabled ? 'text-muted' : '', 'radio-custom']),\n tabindex: _ctx.isDisabled || _ctx.preventFocusOnRadioGroups ? -1 : 0,\n \"aria-label\": _ctx.label,\n \"aria-checked\": _ctx.isChecked,\n \"aria-disabled\": _ctx.isDisabled,\n \"aria-describedby\": _ctx.descriptionKey || _ctx.description ? _ctx.describeById : undefined,\n role: \"radio\"\n }, null, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"label\", {\n class: _normalizeClass([ _ctx.muteLabel ? 'text-muted' : '', 'radio-label', 'm-0']),\n for: _ctx.name\n }, [\n (_ctx.hasLabelSlot)\n ? _renderSlot(_ctx.$slots, \"label\", { key: 0 }, undefined, true)\n : (_ctx.label)\n ? _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_5, null, 512)), [\n [_directive_clean_html, _ctx.label]\n ])\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_4),\n (_ctx.descriptionKey || _ctx.description)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n id: _ctx.describeById,\n class: \"radio-button-outer-container-description\"\n }, [\n (_ctx.descriptionKey)\n ? (_openBlock(), _createBlock(_component_t, {\n key: 0,\n k: _ctx.descriptionKey\n }, null, 8, [\"k\"]))\n : (_ctx.description)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.description), 1)\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_6))\n : (_ctx.hasDescriptionSlot)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _renderSlot(_ctx.$slots, \"description\", {}, undefined, true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 34))\n}","\n\n\n \n \n \n \n
\n \n \n \n \n \n
\n \n \n {{ description }}\n \n
\n
\n \n
\n
\n \n \n\n\n","import { render } from \"./RadioButton.vue?vue&type=template&id=72e20a8d&scoped=true&ts=true\"\nimport script from \"./RadioButton.vue?vue&type=script&lang=ts\"\nexport * from \"./RadioButton.vue?vue&type=script&lang=ts\"\n\nimport \"./RadioButton.vue?vue&type=style&index=0&id=72e20a8d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-72e20a8d\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementVNode as _createElementVNode, renderList as _renderList, createVNode as _createVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"radio-group label\"\n}\nconst _hoisted_2 = {\n key: 2,\n class: \"icon icon-info icon-lg\"\n}\nconst _hoisted_3 = {\n key: 3,\n class: \"icon icon-info icon-lg\"\n}\nconst _hoisted_4 = [\"aria-label\", \"aria-describedby\", \"aria-activedescendant\", \"tabindex\", \"aria-disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_t = _resolveComponent(\"t\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _directive_clean_tooltip = _resolveDirective(\"clean-tooltip\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n (_ctx.label || _ctx.labelKey || _ctx.tooltip || _ctx.tooltipKey || _ctx.$slots.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"label\", {}, () => [\n _createElementVNode(\"h3\", null, [\n (_ctx.labelKey)\n ? (_openBlock(), _createBlock(_component_t, {\n key: 0,\n k: _ctx.labelKey\n }, null, 8, [\"k\"]))\n : (_ctx.label)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.label), 1)\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.tooltipKey)\n ? _withDirectives((_openBlock(), _createElementBlock(\"i\", _hoisted_2, null, 512)), [\n [_directive_clean_tooltip, _ctx.t(_ctx.tooltipKey)]\n ])\n : (_ctx.tooltip)\n ? _withDirectives((_openBlock(), _createElementBlock(\"i\", _hoisted_3, null, 512)), [\n [_directive_clean_tooltip, _ctx.tooltip]\n ])\n : _createCommentVNode(\"\", true)\n ])\n ], true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n ref: \"radioGroup\",\n role: \"radiogroup\",\n \"aria-label\": _ctx.radioGroupAriaLabel,\n \"aria-describedby\": _ctx.radioGroupAriaDescribedBy,\n \"aria-activedescendant\": _ctx.ariaActiveDescendant,\n class: _normalizeClass([\"radio-group\", {'row':_ctx.row}]),\n tabindex: _ctx.isDisabled ? -1 : 0,\n \"aria-disabled\": _ctx.isDisabled,\n onKeydown: [\n _cache[1] || (_cache[1] = _withKeys(_withModifiers(($event: any) => (_ctx.clickNext(1)), [\"prevent\",\"stop\"]), [\"down\"])),\n _cache[2] || (_cache[2] = _withKeys(_withModifiers(($event: any) => (_ctx.clickNext(-1)), [\"prevent\",\"stop\"]), [\"up\"])),\n _cache[3] || (_cache[3] = _withKeys(_withModifiers(() => {}, [\"stop\",\"prevent\"]), [\"space\",\"enter\"]))\n ]\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.normalizedOptions, (option, i) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: i }, [\n _renderSlot(_ctx.$slots, i, {\n vBind: _ctx.$attrs,\n option: option,\n isDisabled: _ctx.isDisabled\n }, () => [\n _createVNode(_component_RadioButton, {\n name: _ctx.name,\n value: _ctx.value,\n label: option.label,\n \"radio-option-id\": option.radioOptionId,\n description: option.description,\n val: option.value,\n disabled: _ctx.isDisabled,\n \"data-testid\": `radio-button-${i}`,\n mode: _ctx.mode,\n \"prevent-focus-on-radio-groups\": true,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('update:value', $event)))\n }, null, 8, [\"name\", \"value\", \"label\", \"radio-option-id\", \"description\", \"val\", \"disabled\", \"data-testid\", \"mode\"])\n ], true)\n ]))\n }), 128))\n ], 42, _hoisted_4)\n ]))\n}","\n\n\n \n \n
\n \n \n \n \n {{ label }}\n \n \n \n \n \n
\n\n \n
\n
\n \n\n\n","import { render } from \"./RadioGroup.vue?vue&type=template&id=275b96ee&scoped=true&ts=true\"\nimport script from \"./RadioGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./RadioGroup.vue?vue&type=script&lang=ts\"\n\nimport \"./RadioGroup.vue?vue&type=style&index=0&id=275b96ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-275b96ee\"]])\n\nexport default __exports__","import { mergeProps as _mergeProps, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"value\", \"data-testid\", \"disabled\", \"placeholder\", \"spellcheck\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"textarea\", _mergeProps({\n ref: \"ta\",\n value: _ctx.value,\n \"data-testid\": _ctx.$attrs['data-testid'] ? _ctx.$attrs['data-testid'] : 'text-area-auto-grow',\n disabled: _ctx.isDisabled,\n style: _ctx.style,\n placeholder: _ctx.placeholder,\n class: [_ctx.className, \"no-resize no-ease\"]\n }, _ctx.$attrs, {\n spellcheck: _ctx.spellcheck,\n onPaste: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('paste', $event))),\n onInput: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onInput($event))),\n onFocus: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$emit('focus', $event))),\n onBlur: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$emit('blur', $event)))\n }), null, 16, _hoisted_1))\n}","\n\n\n \n \n","import { render } from \"./TextAreaAutoGrow.vue?vue&type=template&id=3a422c38&ts=true\"\nimport script from \"./TextAreaAutoGrow.vue?vue&type=script&lang=ts\"\nexport * from \"./TextAreaAutoGrow.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = [\"data-testid\"]\nconst _hoisted_2 = {\n key: 0,\n class: \"tooltip\",\n \"x-placement\": \"bottom\"\n}\nconst _hoisted_3 = { class: \"tooltip-inner\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_clean_tooltip = _resolveDirective(\"clean-tooltip\")!\n const _directive_stripped_aria_label = _resolveDirective(\"stripped-aria-label\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n ref: \"container\",\n class: _normalizeClass([\"labeled-tooltip\", {[_ctx.status]: true, hoverable: _ctx.hover}])\n }, [\n (_ctx.hover)\n ? _withDirectives((_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass([{'hover':!_ctx.value, [_ctx.iconClass]: true}, \"icon status-icon\"]),\n tabindex: \"0\",\n \"data-testid\": _ctx.componentTestid,\n role: \"tooltip\"\n }, null, 10, _hoisted_1)), [\n [_directive_clean_tooltip, _ctx.tooltipContent],\n [_directive_stripped_aria_label, `${_ctx.t('generic.tooltip')} - ${(_ctx.isObject(_ctx.value) ? _ctx.value.content : _ctx.value)}`]\n ])\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([{'hover':!_ctx.value}, \"icon status-icon\"])\n }, null, 2),\n (_ctx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _cache[0] || (_cache[0] = _createElementVNode(\"div\", { class: \"tooltip-arrow\" }, null, -1)),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.value), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n ], 2))\n}","\n\n\n \n \n\n\n","import { render } from \"./LabeledTooltip.vue?vue&type=template&id=0217a440&scoped=true&ts=true\"\nimport script from \"./LabeledTooltip.vue?vue&type=script&lang=ts\"\nexport * from \"./LabeledTooltip.vue?vue&type=script&lang=ts\"\n\nimport \"./LabeledTooltip.vue?vue&type=style&index=0&id=0217a440&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0217a440\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\"\n\nimport RcButton from '@components/RcButton/RcButton.vue';\nimport { RcTagProps } from './types';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcTag',\n props: {\n type: {},\n disabled: { type: Boolean, default: false },\n showClose: { type: Boolean, default: false },\n closeAriaLabel: {},\n highlight: { type: Boolean, default: undefined }\n },\n emits: ['close'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props;\nconst emit = __emit;\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"rc-tag\", {[props.type]: true, disabled: props.disabled, highlight: props.highlight}])\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n (props.showClose)\n ? (_openBlock(), _createBlock(RcButton, {\n key: 0,\n variant: \"ghost\",\n \"aria-label\": props.closeAriaLabel,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [...(_cache[1] || (_cache[1] = [\n _createElementVNode(\"i\", { class: \"icon icon-close\" }, null, -1)\n ]))]),\n _: 1\n }, 8, [\"aria-label\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","\n\n\n \n \n \n \n \n
\n \n\n\n","import script from \"./RcTag.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcTag.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcTag.vue?vue&type=style&index=0&id=033f89b8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-033f89b8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDynamicComponent as _resolveDynamicComponent, normalizeClass as _normalizeClass, withCtx as _withCtx } from \"vue\"\n\nimport { computed, ref, resolveComponent } from 'vue';\nimport type { RouteLocationRaw } from 'vue-router';\nimport {\n ButtonVariantProps,\n ButtonSizeProps,\n ButtonVariantNewProps,\n ButtonSizeNewProps,\n ButtonSize,\n IconProps,\n} from './types';\nimport RcIcon from '@components/RcIcon/RcIcon.vue';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcButton',\n props: {\n primary: { type: Boolean },\n secondary: { type: Boolean },\n tertiary: { type: Boolean },\n link: { type: Boolean },\n multiAction: { type: Boolean },\n ghost: { type: Boolean },\n small: { type: Boolean },\n variant: {},\n size: { default: 'medium' },\n leftIcon: {},\n rightIcon: {},\n to: { default: undefined }\n },\n setup(__props: any, { expose: __expose }) {\n\n/**\n * A button element used for performing actions, such as submitting forms or\n * opening dialogs.\n *\n * Example:\n *\n * Perform an Action \n */\nconst buttonVariants: { variant: keyof ButtonVariantProps, className: string }[] = [\n { variant: 'primary', className: 'variant-primary' },\n { variant: 'secondary', className: 'variant-secondary' },\n { variant: 'tertiary', className: 'variant-tertiary' },\n { variant: 'link', className: 'variant-link' },\n { variant: 'multiAction', className: 'variant-multi-action' },\n { variant: 'ghost', className: 'variant-ghost' },\n];\n\nconst buttonSizes: { size: keyof ButtonSizeProps, className: string }[] = [\n { size: 'small', className: 'btn-sm' },\n];\n\nconst buttonSizesNew: { size: ButtonSize, className: string }[] = [\n { size: 'small', className: 'btn-small' },\n { size: 'medium', className: 'btn-medium' },\n { size: 'large', className: 'btn-large' },\n];\n\nconst props = __props;\n\nconst tag = computed(() => (props.to ? resolveComponent('RouterLink') : 'button'));\nconst role = computed(() => (props.to ? 'link' : 'button'));\n\nconst activeVariantClassName = computed(() => {\n if (props.variant === 'multiAction' || props.multiAction) {\n console.warn('[RcButton] The \"multiAction\" variant is deprecated and will be removed in a future version.'); // eslint-disable-line no-console\n }\n\n const activeVariant = buttonVariants.find(({ variant }) => props[variant]);\n\n if (activeVariant) {\n console.warn( // eslint-disable-line no-console\n `[RcButton] The \"${ activeVariant.variant }\" prop is deprecated and will be removed in a future version. ` +\n `Please use variant=\"${ activeVariant.variant }\" instead.`\n );\n\n return activeVariant.className;\n } else {\n const variantConfig = buttonVariants.find(({ variant }) => variant === props.variant);\n\n return variantConfig?.className || 'variant-primary';\n }\n});\n\nconst activeSizeClassName = computed(() => {\n const activeSize = buttonSizes.find(({ size }) => props[size]);\n\n if (activeSize) {\n /* eslint-disable no-console */\n console.warn(\n `[RcButton] The \"${ activeSize.size }\" prop is deprecated and will be removed in a future version. ` +\n `Please use size=\"${ activeSize.size }\" instead.`\n );\n /* eslint-enable no-console */\n\n return activeSize.className;\n } else {\n const sizeConfig = buttonSizesNew.find(({ size }) => size === props.size);\n\n return sizeConfig?.className || '';\n }\n});\n\nconst buttonClass = computed(() => {\n return {\n 'rc-button': true,\n btn: true,\n [activeVariantClassName.value]: true,\n [activeSizeClassName.value]: !!activeSizeClassName.value,\n };\n});\n\nconst RcFocusTarget = ref(null);\n\nconst focus = () => {\n RcFocusTarget?.value?.focus();\n};\n\n__expose({ focus });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(tag.value), {\n ref_key: \"RcFocusTarget\",\n ref: RcFocusTarget,\n role: role.value,\n to: __props.to,\n class: _normalizeClass({ ...buttonClass.value })\n }, {\n default: _withCtx(() => [\n (_ctx.$slots.before || props.leftIcon)\n ? _renderSlot(_ctx.$slots, \"before\", { key: 0 }, () => [\n (props.leftIcon)\n ? (_openBlock(), _createBlock(RcIcon, {\n key: 0,\n class: \"left-icon\",\n type: props.leftIcon,\n size: \"inherit\"\n }, null, 8, [\"type\"]))\n : _createCommentVNode(\"\", true)\n ])\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\"),\n (_ctx.$slots.after || props.rightIcon)\n ? _renderSlot(_ctx.$slots, \"after\", { key: 1 }, () => [\n (props.rightIcon)\n ? (_openBlock(), _createBlock(RcIcon, {\n key: 0,\n class: \"right-icon\",\n type: props.rightIcon,\n size: \"inherit\"\n }, null, 8, [\"type\"]))\n : _createCommentVNode(\"\", true)\n ])\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"role\", \"to\", \"class\"]))\n}\n}\n\n})","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import script from \"./RcButton.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcButton.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcButton.vue?vue&type=style&index=0&id=7132dc2f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7132dc2f\"]])\n\nexport default __exports__","import { Status } from '@components/utils/status';\n\nexport const RcIconTypeToClass = {\n actions: 'icon-actions',\n ai: 'icon-ai',\n 'alert-alt': 'icon-alert-alt',\n alert: 'icon-alert',\n anchor: 'icon-anchor',\n apple: 'icon-apple',\n application: 'icon-application',\n apps: 'icon-apps',\n archive: 'icon-archive',\n 'backup-restore': 'icon-backup-restore',\n backup: 'icon-backup',\n 'brush-icon': 'icon-brush-icon',\n 'category-alt': 'icon-category-alt',\n checkmark: 'icon-checkmark',\n 'chevron-beginning': 'icon-chevron-beginning',\n 'chevron-down': 'icon-chevron-down',\n 'chevron-end': 'icon-chevron-end',\n 'chevron-left': 'icon-chevron-left',\n 'chevron-right': 'icon-chevron-right',\n 'chevron-up': 'icon-chevron-up',\n 'circle-plus': 'icon-circle-plus',\n cis: 'icon-cis',\n close: 'icon-close',\n 'cluster-management': 'icon-cluster-management',\n cluster: 'icon-cluster',\n code: 'icon-code',\n comment: 'icon-comment',\n commit: 'icon-commit',\n compass: 'icon-compass',\n 'confirmation-alt': 'icon-confirmation-alt',\n copy: 'icon-copy',\n dashboard: 'icon-dashboard',\n dock: 'icon-dock',\n docker: 'icon-docker',\n document: 'icon-document',\n 'dot-half': 'icon-dot-half',\n 'dot-open': 'icon-dot-open',\n dot: 'icon-dot',\n 'downgrade-alt': 'icon-downgrade-alt',\n download: 'icon-download',\n edit: 'icon-edit',\n elemental: 'icon-elemental',\n endpoints_connected: 'icon-endpoints_connected',\n endpoints_disconnected: 'icon-endpoints_disconnected',\n epinio: 'icon-epinio',\n error: 'icon-error',\n explore: 'icon-explore',\n extension: 'icon-extension',\n 'external-link': 'icon-external-link',\n file: 'icon-file',\n filter_alt: 'icon-filter_alt',\n flask: 'icon-flask',\n fleet: 'icon-fleet',\n folder: 'icon-folder',\n fork: 'icon-fork',\n gatekeeper: 'icon-gatekeeper',\n gear: 'icon-gear',\n gemini: 'icon-gemini',\n git: 'icon-git',\n github: 'icon-github',\n gitlab: 'icon-gitlab',\n globe: 'icon-globe',\n groups: 'icon-groups',\n harvester: 'icon-harvester',\n helm: 'icon-helm',\n hide: 'icon-hide',\n history: 'icon-history',\n home: 'icon-home',\n 'info-circle': 'icon-info-circle',\n info: 'icon-info',\n init_container: 'icon-init_container',\n istio: 'icon-istio',\n keyboard: 'icon-keyboard',\n keyboard_tab: 'icon-keyboard_tab',\n linux: 'icon-linux',\n 'list-flat': 'icon-list-flat',\n 'list-grouped': 'icon-list-grouped',\n lock: 'icon-lock',\n logging: 'icon-logging',\n longhorn: 'icon-longhorn',\n marketplace: 'icon-marketplace',\n menu: 'icon-menu',\n minus: 'icon-minus',\n monitoring: 'icon-monitoring',\n more: 'icon-more',\n namespace: 'icon-namespace',\n notifier: 'icon-notifier',\n 'notify-announcement': 'icon-notify-announcement',\n 'notify-bell': 'icon-notify-bell',\n 'notify-busy': 'icon-notify-busy',\n 'notify-error': 'icon-notify-error',\n 'notify-info': 'icon-notify-info',\n 'notify-tick': 'icon-notify-tick',\n 'notify-warning': 'icon-notify-warning',\n ollama: 'icon-ollama',\n openai: 'icon-openai',\n 'os-management': 'icon-os-management',\n pause: 'icon-pause',\n 'pin-outlined': 'icon-pin-outlined',\n pin: 'icon-pin',\n pipeline: 'icon-pipeline',\n play: 'icon-play',\n plus: 'icon-plus',\n pod_security: 'icon-pod_security',\n print: 'icon-print',\n 'question-mark': 'icon-question-mark',\n 'quick-action': 'icon-quick-action',\n 'rancher-desktop': 'icon-rancher-desktop',\n 'rancher-observability': 'icon-rancher-observability',\n 'refresh-alt': 'icon-refresh-alt',\n refresh: 'icon-refresh',\n 'repository-alt': 'icon-repository-alt',\n repository: 'icon-repository',\n rio: 'icon-rio',\n 'role-binding': 'icon-role-binding',\n search: 'icon-search',\n send: 'icon-send',\n service: 'icon-service',\n show: 'icon-show',\n snapshot: 'icon-snapshot',\n 'sort-down': 'icon-sort-down',\n 'sort-up': 'icon-sort-up',\n sort: 'icon-sort',\n sources: 'icon-sources',\n spinner: 'icon-spinner',\n stackstate: 'icon-stackstate',\n 'star-open': 'icon-star-open',\n star: 'icon-star',\n storage: 'icon-storage',\n 'tag-alt': 'icon-tag-alt',\n terminal: 'icon-terminal',\n 'thinking-process': 'icon-thinking-process',\n trash: 'icon-trash',\n unlock: 'icon-unlock',\n 'upgrade-alt': 'icon-upgrade-alt',\n upload: 'icon-upload',\n 'user-check': 'icon-user-check',\n 'user-xmark': 'icon-user-xmark',\n user: 'icon-user',\n 'version-alt': 'icon-version-alt',\n warning: 'icon-warning',\n windows: 'icon-windows',\n};\n\nexport const RcIconSizeToCSS = {\n xxlarge: '40px',\n xlarge: '32px',\n large: '24px',\n medium: '16px',\n small: '14px',\n inherit: 'inherit'\n};\n\nexport type RcIconSize = keyof typeof RcIconSizeToCSS;\n\nexport type RcIconType = keyof typeof RcIconTypeToClass;\n\nexport interface RcIconProps {\n type: RcIconType;\n size?: RcIconSize;\n ariaHidden?: boolean;\n status?: Status | 'inherit';\n}\n","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"aria-hidden\"]\n\nimport { RcIconSizeToCSS, RcIconTypeToClass, RcIconProps } from './types';\nimport { computed } from 'vue';\nimport { useStatusColors } from '@components/utils/status';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'RcIcon',\n props: {\n type: {},\n size: { default: 'small' },\n ariaHidden: { type: Boolean, default: true },\n status: { default: 'inherit' }\n },\n setup(__props: any) {\n\n_useCssVars(_ctx => ({\n \"v4e6c3731\": (fontSize.value),\n \"v17bbae7c\": (color.value)\n}))\n\nconst props = __props;\nconst fontSize = computed(() => {\n return RcIconSizeToCSS[props.size];\n});\n\nconst iconClass = computed(() => {\n return RcIconTypeToClass[props.type];\n});\n\nconst status = computed(() => {\n if (props.status && props.status !== 'inherit') {\n return props.status;\n }\n\n return 'none';\n});\n\nconst { textColor } = useStatusColors(status, 'outlined');\n\nconst color = computed(() => {\n if (props.status === undefined || props.status === 'inherit') {\n return 'inherit';\n }\n\n return textColor.value;\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"i\", {\n class: _normalizeClass([\"rc-icon\", {[props.size]: true, [iconClass.value]: true}]),\n \"aria-hidden\": props.ariaHidden\n }, null, 10, _hoisted_1))\n}\n}\n\n})","\n\n\n \n \n\n\n","import script from \"./RcIcon.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RcIcon.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RcIcon.vue?vue&type=style&index=0&id=2624fc9a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2624fc9a\"]])\n\nexport default __exports__","\n\n\n \n
\n \n
{{ t('harvester.upgradePage.upgradeInfo.warning') }}: \n
\n\n
\n {{ t('harvester.upgradePage.upgradeInfo.tip') }}\n
\n\n
\n {{ t('harvester.upgradePage.upgradeInfo.moreNotes') }} {{ t('generic.moreInfo') }} \n
\n
\n \n
\n \n","import { render } from \"./UpgradeInfo.vue?vue&type=template&id=a8aa7626\"\nimport script from \"./UpgradeInfo.vue?vue&type=script&lang=js\"\nexport * from \"./UpgradeInfo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n \n
\n \n
{{ t('harvester.modal.bundle.title') }} \n
\n
\n \n
\n
\n
\n \n \n\n \n \n 1 ? 'Minutes' : 'Minute'\"\n @keydown=\"onKeyDown\"\n @update:value=\"val => updateNumberValue('timeout', val)\"\n />\n 1 ? 'Minutes' : 'Minute'\"\n @keydown=\"onKeyDown\"\n @update:value=\"val => updateNumberValue('expiration', val)\"\n />\n 1 ? 'Minutes' : 'Minute'\"\n @keydown=\"onKeyDown\"\n @update:value=\"val => updateNumberValue('nodeTimeout', val)\"\n />\n \n \n
\n \n
\n \n
\n
\n \n
\n \n\n\n","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {{ parsePercentage }}%\n \n \n \n\n\n","import { render } from \"./Circle.vue?vue&type=template&id=5f78e642&scoped=true\"\nimport script from \"./Circle.vue?vue&type=script&lang=js\"\nexport * from \"./Circle.vue?vue&type=script&lang=js\"\n\nimport \"./Circle.vue?vue&type=style&index=0&id=5f78e642&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5f78e642\"]])\n\nexport default __exports__","import { render } from \"./HarvesterSupportBundle.vue?vue&type=template&id=edef926a&scoped=true\"\nimport script from \"./HarvesterSupportBundle.vue?vue&type=script&lang=js\"\nexport * from \"./HarvesterSupportBundle.vue?vue&type=script&lang=js\"\n\nimport \"./HarvesterSupportBundle.vue?vue&type=style&index=0&id=edef926a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-edef926a\"]])\n\nexport default __exports__","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = 1 + originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\tadjustedLength > 0 ? adjustedLength : 0,\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidCron = void 0;\n// This comes from the fact that parseInt trims characters coming\n// after digits and consider it a valid int, so `1*` becomes `1`.\nvar safeParseInt = function (value) {\n if (/^\\d+$/.test(value)) {\n return Number(value);\n }\n else {\n return NaN;\n }\n};\nvar isWildcard = function (value) {\n return value === '*';\n};\nvar isQuestionMark = function (value) {\n return value === '?';\n};\nvar isInRange = function (value, start, stop) {\n return value >= start && value <= stop;\n};\nvar isValidRange = function (value, start, stop) {\n var sides = value.split('-');\n switch (sides.length) {\n case 1:\n return isWildcard(value) || isInRange(safeParseInt(value), start, stop);\n case 2:\n var _a = sides.map(function (side) { return safeParseInt(side); }), small = _a[0], big = _a[1];\n return small <= big && isInRange(small, start, stop) && isInRange(big, start, stop);\n default:\n return false;\n }\n};\nvar isValidStep = function (value) {\n return value === undefined || (value.search(/[^\\d]/) === -1 && safeParseInt(value) > 0);\n};\nvar validateForRange = function (value, start, stop) {\n if (value.search(/[^\\d-,\\/*]/) !== -1) {\n return false;\n }\n var list = value.split(',');\n return list.every(function (condition) {\n var splits = condition.split('/');\n // Prevents `*/ * * * *` from being accepted.\n if (condition.trim().endsWith('/')) {\n return false;\n }\n // Prevents `*/*/* * * * *` from being accepted\n if (splits.length > 2) {\n return false;\n }\n // If we don't have a `/`, right will be undefined which is considered a valid step if we don't a `/`.\n var left = splits[0], right = splits[1];\n return isValidRange(left, start, stop) && isValidStep(right);\n });\n};\nvar hasValidSeconds = function (seconds) {\n return validateForRange(seconds, 0, 59);\n};\nvar hasValidMinutes = function (minutes) {\n return validateForRange(minutes, 0, 59);\n};\nvar hasValidHours = function (hours) {\n return validateForRange(hours, 0, 23);\n};\nvar hasValidDays = function (days, allowBlankDay) {\n return (allowBlankDay && isQuestionMark(days)) || validateForRange(days, 1, 31);\n};\nvar monthAlias = {\n jan: '1',\n feb: '2',\n mar: '3',\n apr: '4',\n may: '5',\n jun: '6',\n jul: '7',\n aug: '8',\n sep: '9',\n oct: '10',\n nov: '11',\n dec: '12'\n};\nvar hasValidMonths = function (months, alias) {\n // Prevents alias to be used as steps\n if (months.search(/\\/[a-zA-Z]/) !== -1) {\n return false;\n }\n if (alias) {\n var remappedMonths = months.toLowerCase().replace(/[a-z]{3}/g, function (match) {\n return monthAlias[match] === undefined ? match : monthAlias[match];\n });\n // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the months\n return validateForRange(remappedMonths, 1, 12);\n }\n return validateForRange(months, 1, 12);\n};\nvar weekdaysAlias = {\n sun: '0',\n mon: '1',\n tue: '2',\n wed: '3',\n thu: '4',\n fri: '5',\n sat: '6'\n};\nvar hasValidWeekdays = function (weekdays, options) {\n var allowBlankDay = options.allowBlankDay, alias = options.alias, allowSevenAsSunday = options.allowSevenAsSunday, allowNthWeekdayOfMonth = options.allowNthWeekdayOfMonth;\n // If there is a question mark, checks if the allowBlankDay flag is set\n if (allowBlankDay && isQuestionMark(weekdays)) {\n return true;\n }\n else if (!allowBlankDay && isQuestionMark(weekdays)) {\n return false;\n }\n // Prevents alias to be used as steps\n if (weekdays.search(/\\/[a-zA-Z]/) !== -1) {\n return false;\n }\n var remappedWeekdays = alias\n ? weekdays.toLowerCase().replace(/[a-z]{3}/g, function (match) {\n return weekdaysAlias[match] === undefined\n ? match\n : weekdaysAlias[match];\n })\n : weekdays;\n var maxWeekdayNum = allowSevenAsSunday ? 7 : 6;\n var splitByHash = remappedWeekdays.split('#');\n if (allowNthWeekdayOfMonth && splitByHash.length >= 2) {\n // see https://github.com/Airfooox/cron-validate/blob/b95aae1f3a44ad89dbfc7d1a7fca63f3b697aa14/src/helper.ts#L139\n // and https://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html#special-characters\n var weekday = splitByHash[0], occurrence = splitByHash[1], leftOvers = splitByHash.slice(2);\n if (leftOvers.length !== 0) {\n return false;\n }\n return isInRange(safeParseInt(occurrence), 1, 5) &&\n isInRange(safeParseInt(weekday), 0, maxWeekdayNum);\n }\n return validateForRange(remappedWeekdays, 0, maxWeekdayNum);\n};\nvar hasCompatibleDayFormat = function (days, weekdays, allowBlankDay) {\n return !(allowBlankDay && isQuestionMark(days) && isQuestionMark(weekdays));\n};\nvar split = function (cron) {\n return cron.trim().split(/\\s+/);\n};\nvar defaultOptions = {\n alias: false,\n seconds: false,\n allowBlankDay: false,\n allowSevenAsSunday: false,\n allowNthWeekdayOfMonth: false,\n};\nexports.isValidCron = function (cron, partialOptions) {\n var options = __assign(__assign({}, defaultOptions), partialOptions);\n var splits = split(cron);\n if (splits.length > (options.seconds ? 6 : 5) || splits.length < 5) {\n return false;\n }\n var checks = [];\n if (splits.length === 6) {\n var seconds = splits.shift();\n if (seconds) {\n checks.push(hasValidSeconds(seconds));\n }\n }\n // We could only check the steps gradually and return false on the first invalid block,\n // However, this won't have any performance impact so why bother for now.\n var minutes = splits[0], hours = splits[1], days = splits[2], months = splits[3], weekdays = splits[4];\n checks.push(hasValidMinutes(minutes));\n checks.push(hasValidHours(hours));\n checks.push(hasValidDays(days, options.allowBlankDay));\n checks.push(hasValidMonths(months, options.alias));\n checks.push(hasValidWeekdays(weekdays, options));\n checks.push(hasCompatibleDayFormat(days, weekdays, options.allowBlankDay));\n return checks.every(Boolean);\n};\n//# sourceMappingURL=index.js.map","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cronstrue\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cronstrue\"] = factory();\n\telse\n\t\troot[\"cronstrue\"] = factory();\n})(globalThis, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 949:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CronParser = void 0;\nvar rangeValidator_1 = __webpack_require__(515);\nvar CronParser = (function () {\n function CronParser(expression, dayOfWeekStartIndexZero, monthStartIndexZero) {\n if (dayOfWeekStartIndexZero === void 0) { dayOfWeekStartIndexZero = true; }\n if (monthStartIndexZero === void 0) { monthStartIndexZero = false; }\n this.expression = expression;\n this.dayOfWeekStartIndexZero = dayOfWeekStartIndexZero;\n this.monthStartIndexZero = monthStartIndexZero;\n }\n CronParser.prototype.parse = function () {\n var _a;\n var parsed;\n var expression = (_a = this.expression) !== null && _a !== void 0 ? _a : '';\n if (expression.startsWith('@')) {\n var special = this.parseSpecial(this.expression);\n parsed = this.extractParts(special);\n }\n else {\n parsed = this.extractParts(this.expression);\n }\n this.normalize(parsed);\n this.validate(parsed);\n return parsed;\n };\n CronParser.prototype.parseSpecial = function (expression) {\n var specialExpressions = {\n '@yearly': '0 0 1 1 *',\n '@annually': '0 0 1 1 *',\n '@monthly': '0 0 1 * *',\n '@weekly': '0 0 * * 0',\n '@daily': '0 0 * * *',\n '@midnight': '0 0 * * *',\n '@hourly': '0 * * * *'\n };\n var special = specialExpressions[expression];\n if (!special) {\n throw new Error('Unknown special expression.');\n }\n return special;\n };\n CronParser.prototype.extractParts = function (expression) {\n if (!this.expression) {\n throw new Error(\"cron expression is empty\");\n }\n var parsed = expression.trim().split(/[ ]+/);\n for (var i = 0; i < parsed.length; i++) {\n if (parsed[i].includes(\",\")) {\n var arrayElement = parsed[i]\n .split(\",\")\n .map(function (item) { return item.trim(); })\n .filter(function (item) { return item !== \"\"; })\n .map(function (item) { return (!isNaN(Number(item)) ? Number(item) : item); })\n .filter(function (item) { return item !== null && item !== \"\"; });\n if (arrayElement.length === 0) {\n arrayElement.push(\"*\");\n }\n arrayElement.sort(function (a, b) { return (a !== null && b !== null ? a - b : 0); });\n parsed[i] = arrayElement.map(function (item) { return (item !== null ? item.toString() : \"\"); }).join(\",\");\n }\n }\n if (parsed.length < 5) {\n throw new Error(\"Expression has only \".concat(parsed.length, \" part\").concat(parsed.length == 1 ? \"\" : \"s\", \". At least 5 parts are required.\"));\n }\n else if (parsed.length == 5) {\n parsed.unshift(\"\");\n parsed.push(\"\");\n }\n else if (parsed.length == 6) {\n var isYearWithNoSecondsPart = /\\d{4}$/.test(parsed[5]) || parsed[4] == \"?\" || parsed[2] == \"?\";\n if (isYearWithNoSecondsPart) {\n parsed.unshift(\"\");\n }\n else {\n parsed.push(\"\");\n }\n }\n else if (parsed.length > 7) {\n throw new Error(\"Expression has \".concat(parsed.length, \" parts; too many!\"));\n }\n return parsed;\n };\n CronParser.prototype.normalize = function (expressionParts) {\n var _this = this;\n expressionParts[3] = expressionParts[3].replace(\"?\", \"*\");\n expressionParts[5] = expressionParts[5].replace(\"?\", \"*\");\n expressionParts[2] = expressionParts[2].replace(\"?\", \"*\");\n if (expressionParts[0].indexOf(\"0/\") == 0) {\n expressionParts[0] = expressionParts[0].replace(\"0/\", \"*/\");\n }\n if (expressionParts[1].indexOf(\"0/\") == 0) {\n expressionParts[1] = expressionParts[1].replace(\"0/\", \"*/\");\n }\n if (expressionParts[2].indexOf(\"0/\") == 0) {\n expressionParts[2] = expressionParts[2].replace(\"0/\", \"*/\");\n }\n if (expressionParts[3].indexOf(\"1/\") == 0) {\n expressionParts[3] = expressionParts[3].replace(\"1/\", \"*/\");\n }\n if (expressionParts[4].indexOf(\"1/\") == 0) {\n expressionParts[4] = expressionParts[4].replace(\"1/\", \"*/\");\n }\n if (expressionParts[6].indexOf(\"1/\") == 0) {\n expressionParts[6] = expressionParts[6].replace(\"1/\", \"*/\");\n }\n expressionParts[5] = expressionParts[5].replace(/(^\\d)|([^#/\\s]\\d)/g, function (t) {\n var dowDigits = t.replace(/\\D/, \"\");\n var dowDigitsAdjusted = dowDigits;\n if (_this.dayOfWeekStartIndexZero) {\n if (dowDigits == \"7\") {\n dowDigitsAdjusted = \"0\";\n }\n }\n else {\n dowDigitsAdjusted = (parseInt(dowDigits) - 1).toString();\n }\n return t.replace(dowDigits, dowDigitsAdjusted);\n });\n if (expressionParts[5] == \"L\") {\n expressionParts[5] = \"6\";\n }\n if (expressionParts[3] == \"?\") {\n expressionParts[3] = \"*\";\n }\n if (expressionParts[3].indexOf(\"W\") > -1 &&\n (expressionParts[3].indexOf(\",\") > -1 || expressionParts[3].indexOf(\"-\") > -1)) {\n throw new Error(\"The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.\");\n }\n var days = {\n SUN: 0,\n MON: 1,\n TUE: 2,\n WED: 3,\n THU: 4,\n FRI: 5,\n SAT: 6,\n };\n for (var day in days) {\n expressionParts[5] = expressionParts[5].replace(new RegExp(day, \"gi\"), days[day].toString());\n }\n expressionParts[4] = expressionParts[4].replace(/(^\\d{1,2})|([^#/\\s]\\d{1,2})/g, function (t) {\n var dowDigits = t.replace(/\\D/, \"\");\n var dowDigitsAdjusted = dowDigits;\n if (_this.monthStartIndexZero) {\n dowDigitsAdjusted = (parseInt(dowDigits) + 1).toString();\n }\n return t.replace(dowDigits, dowDigitsAdjusted);\n });\n var months = {\n JAN: 1,\n FEB: 2,\n MAR: 3,\n APR: 4,\n MAY: 5,\n JUN: 6,\n JUL: 7,\n AUG: 8,\n SEP: 9,\n OCT: 10,\n NOV: 11,\n DEC: 12,\n };\n for (var month in months) {\n expressionParts[4] = expressionParts[4].replace(new RegExp(month, \"gi\"), months[month].toString());\n }\n if (expressionParts[0] == \"0\") {\n expressionParts[0] = \"\";\n }\n if (!/\\*|\\-|\\,|\\//.test(expressionParts[2]) &&\n (/\\*|\\//.test(expressionParts[1]) || /\\*|\\//.test(expressionParts[0]))) {\n expressionParts[2] += \"-\".concat(expressionParts[2]);\n }\n for (var i = 0; i < expressionParts.length; i++) {\n if (expressionParts[i].indexOf(\",\") != -1) {\n expressionParts[i] =\n expressionParts[i]\n .split(\",\")\n .filter(function (str) { return str !== \"\"; })\n .join(\",\") || \"*\";\n }\n if (expressionParts[i] == \"*/1\") {\n expressionParts[i] = \"*\";\n }\n if (expressionParts[i].indexOf(\"/\") > -1 && !/^\\*|\\-|\\,/.test(expressionParts[i])) {\n var stepRangeThrough = null;\n switch (i) {\n case 4:\n stepRangeThrough = \"12\";\n break;\n case 5:\n stepRangeThrough = \"6\";\n break;\n case 6:\n stepRangeThrough = \"9999\";\n break;\n default:\n stepRangeThrough = null;\n break;\n }\n if (stepRangeThrough !== null) {\n var parts = expressionParts[i].split(\"/\");\n expressionParts[i] = \"\".concat(parts[0], \"-\").concat(stepRangeThrough, \"/\").concat(parts[1]);\n }\n }\n }\n };\n CronParser.prototype.validate = function (parsed) {\n var standardCronPartCharacters = \"0-9,\\\\-*\\/\";\n this.validateOnlyExpectedCharactersFound(parsed[0], standardCronPartCharacters);\n this.validateOnlyExpectedCharactersFound(parsed[1], standardCronPartCharacters);\n this.validateOnlyExpectedCharactersFound(parsed[2], standardCronPartCharacters);\n this.validateOnlyExpectedCharactersFound(parsed[3], \"0-9,\\\\-*\\/LW\");\n this.validateOnlyExpectedCharactersFound(parsed[4], standardCronPartCharacters);\n this.validateOnlyExpectedCharactersFound(parsed[5], \"0-9,\\\\-*\\/L#\");\n this.validateOnlyExpectedCharactersFound(parsed[6], standardCronPartCharacters);\n this.validateAnyRanges(parsed);\n };\n CronParser.prototype.validateAnyRanges = function (parsed) {\n rangeValidator_1.default.secondRange(parsed[0]);\n rangeValidator_1.default.minuteRange(parsed[1]);\n rangeValidator_1.default.hourRange(parsed[2]);\n rangeValidator_1.default.dayOfMonthRange(parsed[3]);\n rangeValidator_1.default.monthRange(parsed[4], this.monthStartIndexZero);\n rangeValidator_1.default.dayOfWeekRange(parsed[5], this.dayOfWeekStartIndexZero);\n };\n CronParser.prototype.validateOnlyExpectedCharactersFound = function (cronPart, allowedCharsExpression) {\n var invalidChars = cronPart.match(new RegExp(\"[^\".concat(allowedCharsExpression, \"]+\"), \"gi\"));\n if (invalidChars && invalidChars.length) {\n throw new Error(\"Expression contains invalid values: '\".concat(invalidChars.toString(), \"'\"));\n }\n };\n return CronParser;\n}());\nexports.CronParser = CronParser;\n\n\n/***/ }),\n\n/***/ 333:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExpressionDescriptor = void 0;\nvar stringUtilities_1 = __webpack_require__(823);\nvar cronParser_1 = __webpack_require__(949);\nvar ExpressionDescriptor = (function () {\n function ExpressionDescriptor(expression, options) {\n this.expression = expression;\n this.options = options;\n this.expressionParts = new Array(5);\n if (!this.options.locale && ExpressionDescriptor.defaultLocale) {\n this.options.locale = ExpressionDescriptor.defaultLocale;\n }\n if (!ExpressionDescriptor.locales[this.options.locale]) {\n var fallBackLocale = Object.keys(ExpressionDescriptor.locales)[0];\n console.warn(\"Locale '\".concat(this.options.locale, \"' could not be found; falling back to '\").concat(fallBackLocale, \"'.\"));\n this.options.locale = fallBackLocale;\n }\n this.i18n = ExpressionDescriptor.locales[this.options.locale];\n if (options.use24HourTimeFormat === undefined) {\n options.use24HourTimeFormat = this.i18n.use24HourTimeFormatByDefault();\n }\n }\n ExpressionDescriptor.toString = function (expression, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.throwExceptionOnParseError, throwExceptionOnParseError = _c === void 0 ? true : _c, _d = _b.verbose, verbose = _d === void 0 ? false : _d, _e = _b.dayOfWeekStartIndexZero, dayOfWeekStartIndexZero = _e === void 0 ? true : _e, _f = _b.monthStartIndexZero, monthStartIndexZero = _f === void 0 ? false : _f, use24HourTimeFormat = _b.use24HourTimeFormat, _g = _b.locale, locale = _g === void 0 ? null : _g, _h = _b.tzOffset, tzOffset = _h === void 0 ? 0 : _h;\n var options = {\n throwExceptionOnParseError: throwExceptionOnParseError,\n verbose: verbose,\n dayOfWeekStartIndexZero: dayOfWeekStartIndexZero,\n monthStartIndexZero: monthStartIndexZero,\n use24HourTimeFormat: use24HourTimeFormat,\n locale: locale,\n tzOffset: tzOffset,\n };\n if (options.tzOffset) {\n console.warn(\"'tzOffset' option has been deprecated and will be removed in a future release.\");\n }\n var descripter = new ExpressionDescriptor(expression, options);\n return descripter.getFullDescription();\n };\n ExpressionDescriptor.initialize = function (localesLoader, defaultLocale) {\n if (defaultLocale === void 0) { defaultLocale = \"en\"; }\n ExpressionDescriptor.specialCharacters = [\"/\", \"-\", \",\", \"*\"];\n ExpressionDescriptor.defaultLocale = defaultLocale;\n localesLoader.load(ExpressionDescriptor.locales);\n };\n ExpressionDescriptor.prototype.getFullDescription = function () {\n var description = \"\";\n try {\n var parser = new cronParser_1.CronParser(this.expression, this.options.dayOfWeekStartIndexZero, this.options.monthStartIndexZero);\n this.expressionParts = parser.parse();\n var timeSegment = this.getTimeOfDayDescription();\n var dayOfMonthDesc = this.getDayOfMonthDescription();\n var monthDesc = this.getMonthDescription();\n var dayOfWeekDesc = this.getDayOfWeekDescription();\n var yearDesc = this.getYearDescription();\n description += timeSegment + dayOfMonthDesc + dayOfWeekDesc + monthDesc + yearDesc;\n description = this.transformVerbosity(description, !!this.options.verbose);\n description = description.charAt(0).toLocaleUpperCase() + description.substr(1);\n }\n catch (ex) {\n if (!this.options.throwExceptionOnParseError) {\n description = this.i18n.anErrorOccuredWhenGeneratingTheExpressionD();\n }\n else {\n throw \"\".concat(ex);\n }\n }\n return description;\n };\n ExpressionDescriptor.prototype.getTimeOfDayDescription = function () {\n var secondsExpression = this.expressionParts[0];\n var minuteExpression = this.expressionParts[1];\n var hourExpression = this.expressionParts[2];\n var description = \"\";\n if (!stringUtilities_1.StringUtilities.containsAny(minuteExpression, ExpressionDescriptor.specialCharacters) &&\n !stringUtilities_1.StringUtilities.containsAny(hourExpression, ExpressionDescriptor.specialCharacters) &&\n !stringUtilities_1.StringUtilities.containsAny(secondsExpression, ExpressionDescriptor.specialCharacters)) {\n description += this.i18n.atSpace() + this.formatTime(hourExpression, minuteExpression, secondsExpression);\n }\n else if (!secondsExpression &&\n minuteExpression.indexOf(\"-\") > -1 &&\n !(minuteExpression.indexOf(\",\") > -1) &&\n !(minuteExpression.indexOf(\"/\") > -1) &&\n !stringUtilities_1.StringUtilities.containsAny(hourExpression, ExpressionDescriptor.specialCharacters)) {\n var minuteParts = minuteExpression.split(\"-\");\n description += stringUtilities_1.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(), this.formatTime(hourExpression, minuteParts[0], \"\"), this.formatTime(hourExpression, minuteParts[1], \"\"));\n }\n else if (!secondsExpression &&\n hourExpression.indexOf(\",\") > -1 &&\n hourExpression.indexOf(\"-\") == -1 &&\n hourExpression.indexOf(\"/\") == -1 &&\n !stringUtilities_1.StringUtilities.containsAny(minuteExpression, ExpressionDescriptor.specialCharacters)) {\n var hourParts = hourExpression.split(\",\");\n description += this.i18n.at();\n for (var i = 0; i < hourParts.length; i++) {\n description += \" \";\n description += this.formatTime(hourParts[i], minuteExpression, \"\");\n if (i < hourParts.length - 2) {\n description += \",\";\n }\n if (i == hourParts.length - 2) {\n description += this.i18n.spaceAnd();\n }\n }\n }\n else {\n var secondsDescription = this.getSecondsDescription();\n var minutesDescription = this.getMinutesDescription();\n var hoursDescription = this.getHoursDescription();\n description += secondsDescription;\n if (description && minutesDescription) {\n description += \", \";\n }\n description += minutesDescription;\n if (minutesDescription === hoursDescription) {\n return description;\n }\n if (description && hoursDescription) {\n description += \", \";\n }\n description += hoursDescription;\n }\n return description;\n };\n ExpressionDescriptor.prototype.getSecondsDescription = function () {\n var _this = this;\n var description = this.getSegmentDescription(this.expressionParts[0], this.i18n.everySecond(), function (s) {\n return s;\n }, function (s) {\n return stringUtilities_1.StringUtilities.format(_this.i18n.everyX0Seconds(s), s);\n }, function (s) {\n return _this.i18n.secondsX0ThroughX1PastTheMinute();\n }, function (s) {\n return s == \"0\"\n ? \"\"\n : parseInt(s) < 20\n ? _this.i18n.atX0SecondsPastTheMinute(s)\n : _this.i18n.atX0SecondsPastTheMinuteGt20() || _this.i18n.atX0SecondsPastTheMinute(s);\n });\n return description;\n };\n ExpressionDescriptor.prototype.getMinutesDescription = function () {\n var _this = this;\n var secondsExpression = this.expressionParts[0];\n var hourExpression = this.expressionParts[2];\n var description = this.getSegmentDescription(this.expressionParts[1], this.i18n.everyMinute(), function (s) {\n return s;\n }, function (s) {\n return stringUtilities_1.StringUtilities.format(_this.i18n.everyX0Minutes(s), s);\n }, function (s) {\n return _this.i18n.minutesX0ThroughX1PastTheHour();\n }, function (s) {\n try {\n return s == \"0\" && hourExpression.indexOf(\"/\") == -1 && secondsExpression == \"\"\n ? _this.i18n.everyHour()\n : parseInt(s) < 20\n ? _this.i18n.atX0MinutesPastTheHour(s)\n : _this.i18n.atX0MinutesPastTheHourGt20() || _this.i18n.atX0MinutesPastTheHour(s);\n }\n catch (e) {\n return _this.i18n.atX0MinutesPastTheHour(s);\n }\n });\n return description;\n };\n ExpressionDescriptor.prototype.getHoursDescription = function () {\n var _this = this;\n var expression = this.expressionParts[2];\n var hourIndex = 0;\n var rangeEndValues = [];\n expression\n .split(\"/\")[0]\n .split(\",\")\n .forEach(function (range) {\n var rangeParts = range.split(\"-\");\n if (rangeParts.length === 2) {\n rangeEndValues.push({ value: rangeParts[1], index: hourIndex + 1 });\n }\n hourIndex += rangeParts.length;\n });\n var evaluationIndex = 0;\n var description = this.getSegmentDescription(expression, this.i18n.everyHour(), function (s) {\n var match = rangeEndValues.find(function (r) { return r.value === s && r.index === evaluationIndex; });\n var isRangeEndWithNonZeroMinute = match && _this.expressionParts[1] !== \"0\";\n evaluationIndex++;\n return isRangeEndWithNonZeroMinute ? _this.formatTime(s, \"59\", \"\") : _this.formatTime(s, \"0\", \"\");\n }, function (s) {\n return stringUtilities_1.StringUtilities.format(_this.i18n.everyX0Hours(s), s);\n }, function (s) {\n return _this.i18n.betweenX0AndX1();\n }, function (s) {\n return _this.i18n.atX0();\n });\n return description;\n };\n ExpressionDescriptor.prototype.getDayOfWeekDescription = function () {\n var _this = this;\n var daysOfWeekNames = this.i18n.daysOfTheWeek();\n var description = null;\n if (this.expressionParts[5] == \"*\") {\n description = \"\";\n }\n else {\n description = this.getSegmentDescription(this.expressionParts[5], this.i18n.commaEveryDay(), function (s, form) {\n var exp = s;\n if (s.indexOf(\"#\") > -1) {\n exp = s.substring(0, s.indexOf(\"#\"));\n }\n else if (s.indexOf(\"L\") > -1) {\n exp = exp.replace(\"L\", \"\");\n }\n var parsedExp = parseInt(exp);\n if (_this.options.tzOffset) {\n var hourExpression = _this.expressionParts[2];\n var hour = parseInt(hourExpression) + (_this.options.tzOffset ? _this.options.tzOffset : 0);\n if (hour >= 24) {\n parsedExp++;\n }\n else if (hour < 0) {\n parsedExp--;\n }\n if (parsedExp > 6) {\n parsedExp = 0;\n }\n else if (parsedExp < 0) {\n parsedExp = 6;\n }\n }\n var description = _this.i18n.daysOfTheWeekInCase\n ? _this.i18n.daysOfTheWeekInCase(form)[parsedExp]\n : daysOfWeekNames[parsedExp];\n if (s.indexOf(\"#\") > -1) {\n var dayOfWeekOfMonthDescription = null;\n var dayOfWeekOfMonthNumber = s.substring(s.indexOf(\"#\") + 1);\n var dayOfWeekNumber = s.substring(0, s.indexOf(\"#\"));\n switch (dayOfWeekOfMonthNumber) {\n case \"1\":\n dayOfWeekOfMonthDescription = _this.i18n.first(dayOfWeekNumber);\n break;\n case \"2\":\n dayOfWeekOfMonthDescription = _this.i18n.second(dayOfWeekNumber);\n break;\n case \"3\":\n dayOfWeekOfMonthDescription = _this.i18n.third(dayOfWeekNumber);\n break;\n case \"4\":\n dayOfWeekOfMonthDescription = _this.i18n.fourth(dayOfWeekNumber);\n break;\n case \"5\":\n dayOfWeekOfMonthDescription = _this.i18n.fifth(dayOfWeekNumber);\n break;\n }\n description = dayOfWeekOfMonthDescription + \" \" + description;\n }\n return description;\n }, function (s) {\n if (parseInt(s) == 1) {\n return \"\";\n }\n else {\n return stringUtilities_1.StringUtilities.format(_this.i18n.commaEveryX0DaysOfTheWeek(s), s);\n }\n }, function (s) {\n var beginFrom = s.substring(0, s.indexOf(\"-\"));\n var domSpecified = _this.expressionParts[3] != \"*\";\n return domSpecified ? _this.i18n.commaAndX0ThroughX1(beginFrom) : _this.i18n.commaX0ThroughX1(beginFrom);\n }, function (s) {\n var format = null;\n if (s.indexOf(\"#\") > -1) {\n var dayOfWeekOfMonthNumber = s.substring(s.indexOf(\"#\") + 1);\n var dayOfWeek = s.substring(0, s.indexOf(\"#\"));\n format = _this.i18n.commaOnThe(dayOfWeekOfMonthNumber, dayOfWeek).trim() + _this.i18n.spaceX0OfTheMonth();\n }\n else if (s.indexOf(\"L\") > -1) {\n format = _this.i18n.commaOnTheLastX0OfTheMonth(s.replace(\"L\", \"\"));\n }\n else {\n var domSpecified = _this.expressionParts[3] != \"*\";\n format = domSpecified ? _this.i18n.commaAndOnX0() : _this.i18n.commaOnlyOnX0(s);\n }\n return format;\n });\n }\n return description;\n };\n ExpressionDescriptor.prototype.getMonthDescription = function () {\n var _this = this;\n var monthNames = this.i18n.monthsOfTheYear();\n var description = this.getSegmentDescription(this.expressionParts[4], \"\", function (s, form) {\n return form && _this.i18n.monthsOfTheYearInCase\n ? _this.i18n.monthsOfTheYearInCase(form)[parseInt(s) - 1]\n : monthNames[parseInt(s) - 1];\n }, function (s) {\n if (parseInt(s) == 1) {\n return \"\";\n }\n else {\n return stringUtilities_1.StringUtilities.format(_this.i18n.commaEveryX0Months(s), s);\n }\n }, function (s) {\n return _this.i18n.commaMonthX0ThroughMonthX1() || _this.i18n.commaX0ThroughX1();\n }, function (s) {\n return _this.i18n.commaOnlyInMonthX0 ? _this.i18n.commaOnlyInMonthX0() : _this.i18n.commaOnlyInX0();\n });\n return description;\n };\n ExpressionDescriptor.prototype.getDayOfMonthDescription = function () {\n var _this = this;\n var description = null;\n var expression = this.expressionParts[3];\n switch (expression) {\n case \"L\":\n description = this.i18n.commaOnTheLastDayOfTheMonth();\n break;\n case \"WL\":\n case \"LW\":\n description = this.i18n.commaOnTheLastWeekdayOfTheMonth();\n break;\n default:\n var weekDayNumberMatches = expression.match(/(\\d{1,2}W)|(W\\d{1,2})/);\n if (weekDayNumberMatches) {\n var dayNumber = parseInt(weekDayNumberMatches[0].replace(\"W\", \"\"));\n var dayString = dayNumber == 1\n ? this.i18n.firstWeekday()\n : stringUtilities_1.StringUtilities.format(this.i18n.weekdayNearestDayX0(), dayNumber.toString());\n description = stringUtilities_1.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(), dayString);\n break;\n }\n else {\n var lastDayOffSetMatches = expression.match(/L-(\\d{1,2})/);\n if (lastDayOffSetMatches) {\n var offSetDays = lastDayOffSetMatches[1];\n description = stringUtilities_1.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(offSetDays), offSetDays);\n break;\n }\n else if (expression == \"*\" && this.expressionParts[5] != \"*\") {\n return \"\";\n }\n else {\n description = this.getSegmentDescription(expression, this.i18n.commaEveryDay(), function (s) {\n return s == \"L\"\n ? _this.i18n.lastDay()\n : _this.i18n.dayX0\n ? stringUtilities_1.StringUtilities.format(_this.i18n.dayX0(), s)\n : s;\n }, function (s) {\n return s == \"1\" ? _this.i18n.commaEveryDay() : _this.i18n.commaEveryX0Days(s);\n }, function (s) {\n return _this.i18n.commaBetweenDayX0AndX1OfTheMonth(s);\n }, function (s) {\n return _this.i18n.commaOnDayX0OfTheMonth(s);\n });\n }\n break;\n }\n }\n return description;\n };\n ExpressionDescriptor.prototype.getYearDescription = function () {\n var _this = this;\n var description = this.getSegmentDescription(this.expressionParts[6], \"\", function (s) {\n return /^\\d+$/.test(s) ? new Date(parseInt(s), 1).getFullYear().toString() : s;\n }, function (s) {\n return stringUtilities_1.StringUtilities.format(_this.i18n.commaEveryX0Years(s), s);\n }, function (s) {\n return _this.i18n.commaYearX0ThroughYearX1() || _this.i18n.commaX0ThroughX1();\n }, function (s) {\n return _this.i18n.commaOnlyInYearX0 ? _this.i18n.commaOnlyInYearX0() : _this.i18n.commaOnlyInX0();\n });\n return description;\n };\n ExpressionDescriptor.prototype.getSegmentDescription = function (expression, allDescription, getSingleItemDescription, getIncrementDescriptionFormat, getRangeDescriptionFormat, getDescriptionFormat) {\n var description = null;\n var doesExpressionContainIncrement = expression.indexOf(\"/\") > -1;\n var doesExpressionContainRange = expression.indexOf(\"-\") > -1;\n var doesExpressionContainMultipleValues = expression.indexOf(\",\") > -1;\n if (!expression) {\n description = \"\";\n }\n else if (expression === \"*\") {\n description = allDescription;\n }\n else if (!doesExpressionContainIncrement && !doesExpressionContainRange && !doesExpressionContainMultipleValues) {\n description = stringUtilities_1.StringUtilities.format(getDescriptionFormat(expression), getSingleItemDescription(expression));\n }\n else if (doesExpressionContainMultipleValues) {\n var segments = expression.split(\",\");\n var descriptionContent = \"\";\n for (var i = 0; i < segments.length; i++) {\n if (i > 0 && segments.length > 2) {\n descriptionContent += \",\";\n if (i < segments.length - 1) {\n descriptionContent += \" \";\n }\n }\n if (i > 0 && segments.length > 1 && (i == segments.length - 1 || segments.length == 2)) {\n descriptionContent += \"\".concat(this.i18n.spaceAnd(), \" \");\n }\n if (segments[i].indexOf(\"/\") > -1 || segments[i].indexOf(\"-\") > -1) {\n var isSegmentRangeWithoutIncrement = segments[i].indexOf(\"-\") > -1 && segments[i].indexOf(\"/\") == -1;\n var currentDescriptionContent = this.getSegmentDescription(segments[i], allDescription, getSingleItemDescription, getIncrementDescriptionFormat, isSegmentRangeWithoutIncrement ? this.i18n.commaX0ThroughX1 : getRangeDescriptionFormat, getDescriptionFormat);\n if (isSegmentRangeWithoutIncrement) {\n currentDescriptionContent = currentDescriptionContent.replace(\", \", \"\");\n }\n descriptionContent += currentDescriptionContent;\n }\n else if (!doesExpressionContainIncrement) {\n descriptionContent += getSingleItemDescription(segments[i]);\n }\n else {\n descriptionContent += this.getSegmentDescription(segments[i], allDescription, getSingleItemDescription, getIncrementDescriptionFormat, getRangeDescriptionFormat, getDescriptionFormat);\n }\n }\n if (!doesExpressionContainIncrement) {\n description = stringUtilities_1.StringUtilities.format(getDescriptionFormat(expression), descriptionContent);\n }\n else {\n description = descriptionContent;\n }\n }\n else if (doesExpressionContainIncrement) {\n var segments = expression.split(\"/\");\n description = stringUtilities_1.StringUtilities.format(getIncrementDescriptionFormat(segments[1]), segments[1]);\n if (segments[0].indexOf(\"-\") > -1) {\n var rangeSegmentDescription = this.generateRangeSegmentDescription(segments[0], getRangeDescriptionFormat, getSingleItemDescription);\n if (rangeSegmentDescription.indexOf(\", \") != 0) {\n description += \", \";\n }\n description += rangeSegmentDescription;\n }\n else if (segments[0].indexOf(\"*\") == -1) {\n var rangeItemDescription = stringUtilities_1.StringUtilities.format(getDescriptionFormat(segments[0]), getSingleItemDescription(segments[0]));\n rangeItemDescription = rangeItemDescription.replace(\", \", \"\");\n description += stringUtilities_1.StringUtilities.format(this.i18n.commaStartingX0(), rangeItemDescription);\n }\n }\n else if (doesExpressionContainRange) {\n description = this.generateRangeSegmentDescription(expression, getRangeDescriptionFormat, getSingleItemDescription);\n }\n return description;\n };\n ExpressionDescriptor.prototype.generateRangeSegmentDescription = function (rangeExpression, getRangeDescriptionFormat, getSingleItemDescription) {\n var description = \"\";\n var rangeSegments = rangeExpression.split(\"-\");\n var rangeSegment1Description = getSingleItemDescription(rangeSegments[0], 1);\n var rangeSegment2Description = getSingleItemDescription(rangeSegments[1], 2);\n var rangeDescriptionFormat = getRangeDescriptionFormat(rangeExpression);\n description += stringUtilities_1.StringUtilities.format(rangeDescriptionFormat, rangeSegment1Description, rangeSegment2Description);\n return description;\n };\n ExpressionDescriptor.prototype.formatTime = function (hourExpression, minuteExpression, secondExpression) {\n var hourOffset = 0;\n var minuteOffset = 0;\n if (this.options.tzOffset) {\n hourOffset = this.options.tzOffset > 0 ? Math.floor(this.options.tzOffset) : Math.ceil(this.options.tzOffset);\n minuteOffset = parseFloat((this.options.tzOffset % 1).toFixed(2));\n if (minuteOffset != 0) {\n minuteOffset *= 60;\n }\n }\n var hour = parseInt(hourExpression) + hourOffset;\n var minute = parseInt(minuteExpression) + minuteOffset;\n if (minute >= 60) {\n minute -= 60;\n hour += 1;\n }\n else if (minute < 0) {\n minute += 60;\n hour -= 1;\n }\n if (hour >= 24) {\n hour = hour - 24;\n }\n else if (hour < 0) {\n hour = 24 + hour;\n }\n var period = \"\";\n var setPeriodBeforeTime = false;\n if (!this.options.use24HourTimeFormat) {\n setPeriodBeforeTime = !!(this.i18n.setPeriodBeforeTime && this.i18n.setPeriodBeforeTime());\n period = setPeriodBeforeTime ? \"\".concat(this.getPeriod(hour), \" \") : \" \".concat(this.getPeriod(hour));\n if (hour > 12) {\n hour -= 12;\n }\n if (hour === 0) {\n hour = 12;\n }\n }\n var second = \"\";\n if (secondExpression) {\n second = \":\".concat((\"00\" + secondExpression).substring(secondExpression.length));\n }\n return \"\".concat(setPeriodBeforeTime ? period : \"\").concat((\"00\" + hour.toString()).substring(hour.toString().length), \":\").concat((\"00\" + minute.toString()).substring(minute.toString().length)).concat(second).concat(!setPeriodBeforeTime ? period : \"\");\n };\n ExpressionDescriptor.prototype.transformVerbosity = function (description, useVerboseFormat) {\n if (!useVerboseFormat) {\n description = description.replace(new RegExp(\", \".concat(this.i18n.everyMinute()), \"g\"), \"\");\n description = description.replace(new RegExp(\", \".concat(this.i18n.everyHour()), \"g\"), \"\");\n description = description.replace(new RegExp(this.i18n.commaEveryDay(), \"g\"), \"\");\n description = description.replace(/\\, ?$/, \"\");\n if (this.i18n.conciseVerbosityReplacements) {\n for (var _i = 0, _a = Object.entries(this.i18n.conciseVerbosityReplacements()); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n description = description.replace(new RegExp(key, \"g\"), value);\n }\n }\n }\n return description;\n };\n ExpressionDescriptor.prototype.getPeriod = function (hour) {\n return hour >= 12 ? (this.i18n.pm && this.i18n.pm()) || \"PM\" : (this.i18n.am && this.i18n.am()) || \"AM\";\n };\n ExpressionDescriptor.locales = {};\n return ExpressionDescriptor;\n}());\nexports.ExpressionDescriptor = ExpressionDescriptor;\n\n\n/***/ }),\n\n/***/ 747:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.enLocaleLoader = void 0;\nvar en_1 = __webpack_require__(486);\nvar enLocaleLoader = (function () {\n function enLocaleLoader() {\n }\n enLocaleLoader.prototype.load = function (availableLocales) {\n availableLocales[\"en\"] = new en_1.en();\n };\n return enLocaleLoader;\n}());\nexports.enLocaleLoader = enLocaleLoader;\n\n\n/***/ }),\n\n/***/ 486:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.en = void 0;\nvar en = (function () {\n function en() {\n }\n en.prototype.atX0SecondsPastTheMinuteGt20 = function () {\n return null;\n };\n en.prototype.atX0MinutesPastTheHourGt20 = function () {\n return null;\n };\n en.prototype.commaMonthX0ThroughMonthX1 = function () {\n return null;\n };\n en.prototype.commaYearX0ThroughYearX1 = function () {\n return null;\n };\n en.prototype.use24HourTimeFormatByDefault = function () {\n return false;\n };\n en.prototype.anErrorOccuredWhenGeneratingTheExpressionD = function () {\n return \"An error occurred when generating the expression description. Check the cron expression syntax.\";\n };\n en.prototype.everyMinute = function () {\n return \"every minute\";\n };\n en.prototype.everyHour = function () {\n return \"every hour\";\n };\n en.prototype.atSpace = function () {\n return \"At \";\n };\n en.prototype.everyMinuteBetweenX0AndX1 = function () {\n return \"Every minute between %s and %s\";\n };\n en.prototype.at = function () {\n return \"At\";\n };\n en.prototype.spaceAnd = function () {\n return \" and\";\n };\n en.prototype.everySecond = function () {\n return \"every second\";\n };\n en.prototype.everyX0Seconds = function () {\n return \"every %s seconds\";\n };\n en.prototype.secondsX0ThroughX1PastTheMinute = function () {\n return \"seconds %s through %s past the minute\";\n };\n en.prototype.atX0SecondsPastTheMinute = function () {\n return \"at %s seconds past the minute\";\n };\n en.prototype.everyX0Minutes = function () {\n return \"every %s minutes\";\n };\n en.prototype.minutesX0ThroughX1PastTheHour = function () {\n return \"minutes %s through %s past the hour\";\n };\n en.prototype.atX0MinutesPastTheHour = function () {\n return \"at %s minutes past the hour\";\n };\n en.prototype.everyX0Hours = function () {\n return \"every %s hours\";\n };\n en.prototype.betweenX0AndX1 = function () {\n return \"between %s and %s\";\n };\n en.prototype.atX0 = function () {\n return \"at %s\";\n };\n en.prototype.commaEveryDay = function () {\n return \", every day\";\n };\n en.prototype.commaEveryX0DaysOfTheWeek = function () {\n return \", every %s days of the week\";\n };\n en.prototype.commaX0ThroughX1 = function () {\n return \", %s through %s\";\n };\n en.prototype.commaAndX0ThroughX1 = function () {\n return \", %s through %s\";\n };\n en.prototype.first = function () {\n return \"first\";\n };\n en.prototype.second = function () {\n return \"second\";\n };\n en.prototype.third = function () {\n return \"third\";\n };\n en.prototype.fourth = function () {\n return \"fourth\";\n };\n en.prototype.fifth = function () {\n return \"fifth\";\n };\n en.prototype.commaOnThe = function () {\n return \", on the \";\n };\n en.prototype.spaceX0OfTheMonth = function () {\n return \" %s of the month\";\n };\n en.prototype.lastDay = function () {\n return \"the last day\";\n };\n en.prototype.commaOnTheLastX0OfTheMonth = function () {\n return \", on the last %s of the month\";\n };\n en.prototype.commaOnlyOnX0 = function () {\n return \", only on %s\";\n };\n en.prototype.commaAndOnX0 = function () {\n return \", and on %s\";\n };\n en.prototype.commaEveryX0Months = function () {\n return \", every %s months\";\n };\n en.prototype.commaOnlyInX0 = function () {\n return \", only in %s\";\n };\n en.prototype.commaOnTheLastDayOfTheMonth = function () {\n return \", on the last day of the month\";\n };\n en.prototype.commaOnTheLastWeekdayOfTheMonth = function () {\n return \", on the last weekday of the month\";\n };\n en.prototype.commaDaysBeforeTheLastDayOfTheMonth = function () {\n return \", %s days before the last day of the month\";\n };\n en.prototype.firstWeekday = function () {\n return \"first weekday\";\n };\n en.prototype.weekdayNearestDayX0 = function () {\n return \"weekday nearest day %s\";\n };\n en.prototype.commaOnTheX0OfTheMonth = function () {\n return \", on the %s of the month\";\n };\n en.prototype.commaEveryX0Days = function () {\n return \", every %s days\";\n };\n en.prototype.commaBetweenDayX0AndX1OfTheMonth = function () {\n return \", between day %s and %s of the month\";\n };\n en.prototype.commaOnDayX0OfTheMonth = function () {\n return \", on day %s of the month\";\n };\n en.prototype.commaEveryHour = function () {\n return \", every hour\";\n };\n en.prototype.commaEveryX0Years = function () {\n return \", every %s years\";\n };\n en.prototype.commaStartingX0 = function () {\n return \", starting %s\";\n };\n en.prototype.daysOfTheWeek = function () {\n return [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n };\n en.prototype.monthsOfTheYear = function () {\n return [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n };\n return en;\n}());\nexports.en = en;\n\n\n/***/ }),\n\n/***/ 515:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction assert(value, message) {\n if (!value) {\n throw new Error(message);\n }\n}\nvar RangeValidator = (function () {\n function RangeValidator() {\n }\n RangeValidator.secondRange = function (parse) {\n var parsed = parse.split(',');\n for (var i = 0; i < parsed.length; i++) {\n if (!isNaN(parseInt(parsed[i], 10))) {\n var second = parseInt(parsed[i], 10);\n assert(second >= 0 && second <= 59, 'seconds part must be >= 0 and <= 59');\n }\n }\n };\n RangeValidator.minuteRange = function (parse) {\n var parsed = parse.split(',');\n for (var i = 0; i < parsed.length; i++) {\n if (!isNaN(parseInt(parsed[i], 10))) {\n var minute = parseInt(parsed[i], 10);\n assert(minute >= 0 && minute <= 59, 'minutes part must be >= 0 and <= 59');\n }\n }\n };\n RangeValidator.hourRange = function (parse) {\n var parsed = parse.split(',');\n for (var i = 0; i < parsed.length; i++) {\n if (!isNaN(parseInt(parsed[i], 10))) {\n var hour = parseInt(parsed[i], 10);\n assert(hour >= 0 && hour <= 23, 'hours part must be >= 0 and <= 23');\n }\n }\n };\n RangeValidator.dayOfMonthRange = function (parse) {\n var parsed = parse.split(',');\n for (var i = 0; i < parsed.length; i++) {\n if (!isNaN(parseInt(parsed[i], 10))) {\n var dayOfMonth = parseInt(parsed[i], 10);\n assert(dayOfMonth >= 1 && dayOfMonth <= 31, 'DOM part must be >= 1 and <= 31');\n }\n }\n };\n RangeValidator.monthRange = function (parse, monthStartIndexZero) {\n var parsed = parse.split(',');\n for (var i = 0; i < parsed.length; i++) {\n if (!isNaN(parseInt(parsed[i], 10))) {\n var month = parseInt(parsed[i], 10);\n assert(month >= 1 && month <= 12, monthStartIndexZero ? 'month part must be >= 0 and <= 11' : 'month part must be >= 1 and <= 12');\n }\n }\n };\n RangeValidator.dayOfWeekRange = function (parse, dayOfWeekStartIndexZero) {\n var parsed = parse.split(',');\n for (var i = 0; i < parsed.length; i++) {\n if (!isNaN(parseInt(parsed[i], 10))) {\n var dayOfWeek = parseInt(parsed[i], 10);\n assert(dayOfWeek >= 0 && dayOfWeek <= 6, dayOfWeekStartIndexZero ? 'DOW part must be >= 0 and <= 6' : 'DOW part must be >= 1 and <= 7');\n }\n }\n };\n return RangeValidator;\n}());\nexports[\"default\"] = RangeValidator;\n\n\n/***/ }),\n\n/***/ 823:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringUtilities = void 0;\nvar StringUtilities = (function () {\n function StringUtilities() {\n }\n StringUtilities.format = function (template) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n return template.replace(/%s/g, function (substring) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return values.shift();\n });\n };\n StringUtilities.containsAny = function (text, searchStrings) {\n return searchStrings.some(function (c) {\n return text.indexOf(c) > -1;\n });\n };\n return StringUtilities;\n}());\nexports.StringUtilities = StringUtilities;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it uses a non-standard name for the exports (exports).\n(() => {\nvar exports = __webpack_exports__;\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.toString = void 0;\nvar expressionDescriptor_1 = __webpack_require__(333);\nvar enLocaleLoader_1 = __webpack_require__(747);\nexpressionDescriptor_1.ExpressionDescriptor.initialize(new enLocaleLoader_1.enLocaleLoader());\nexports[\"default\"] = expressionDescriptor_1.ExpressionDescriptor;\nvar toString = expressionDescriptor_1.ExpressionDescriptor.toString;\nexports.toString = toString;\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".validation-message{padding:5px;position:absolute;bottom:-35px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#__layout,#__nuxt,#app,.vm-console,.vm-console>DIV,.vm-console>DIV>DIV,BODY,HTML,MAIN{height:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".d2h-wrapper{text-align:left}.d2h-file-header{background-color:#f7f7f7;border-bottom:1px solid #d8d8d8;display:flex;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;height:35px;padding:5px 10px}.d2h-file-header.d2h-sticky-header{position:sticky;top:0;z-index:1}.d2h-file-stats{display:flex;font-size:14px;margin-left:auto}.d2h-lines-added{border:1px solid #b4e2b4;border-radius:5px 0 0 5px;color:#399839;padding:2px;text-align:right;vertical-align:middle}.d2h-lines-deleted{border:1px solid #e9aeae;border-radius:0 5px 5px 0;color:#c33;margin-left:1px;padding:2px;text-align:left;vertical-align:middle}.d2h-file-name-wrapper{align-items:center;display:flex;font-size:15px;width:100%}.d2h-file-name{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.d2h-file-wrapper{margin-bottom:1em}.d2h-file-collapse,.d2h-file-wrapper{border:1px solid #ddd;border-radius:3px}.d2h-file-collapse{-webkit-box-pack:end;-ms-flex-pack:end;align-items:center;cursor:pointer;display:none;font-size:12px;justify-content:flex-end;padding:4px 8px}.d2h-file-collapse.d2h-selected{background-color:#c8e1ff}.d2h-file-collapse-input{margin:0 4px 0 0}.d2h-diff-table{border-collapse:collapse;font-family:Menlo,Consolas,monospace;font-size:13px;width:100%}.d2h-files-diff{display:flex;width:100%}.d2h-file-diff{overflow-y:hidden}.d2h-file-diff.d2h-d-none,.d2h-files-diff.d2h-d-none{display:none}.d2h-file-side-diff{display:inline-block;overflow-x:scroll;overflow-y:hidden;width:50%}.d2h-code-line{padding:0 8em}.d2h-code-line,.d2h-code-side-line{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;width:100%}.d2h-code-side-line{padding:0 4.5em}.d2h-code-line-ctn{word-wrap:normal;background:none;display:inline-block;padding:0;-webkit-user-select:text;-moz-user-select:text;user-select:text;vertical-align:middle;white-space:pre;width:100%}.d2h-code-line del,.d2h-code-side-line del{background-color:#ffb6ba}.d2h-code-line del,.d2h-code-line ins,.d2h-code-side-line del,.d2h-code-side-line ins{border-radius:.2em;display:inline-block;margin-top:-1px;text-decoration:none;vertical-align:middle}.d2h-code-line ins,.d2h-code-side-line ins{background-color:#97f295;text-align:left}.d2h-code-line-prefix{word-wrap:normal;background:none;display:inline;padding:0;white-space:pre}.line-num1{float:left}.line-num1,.line-num2{box-sizing:border-box;overflow:hidden;padding:0 .5em;text-overflow:ellipsis;width:3.5em}.line-num2{float:right}.d2h-code-linenumber{background-color:#fff;border:solid #eee;border-width:0 1px;box-sizing:border-box;color:rgba(0,0,0,.3);cursor:pointer;display:inline-block;position:absolute;text-align:right;width:7.5em}.d2h-code-linenumber:after{content:\\\"\\\\200b\\\"}.d2h-code-side-linenumber{background-color:#fff;border:solid #eee;border-width:0 1px;box-sizing:border-box;color:rgba(0,0,0,.3);cursor:pointer;display:inline-block;overflow:hidden;padding:0 .5em;position:absolute;text-align:right;text-overflow:ellipsis;width:4em}.d2h-code-side-linenumber:after{content:\\\"\\\\200b\\\"}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;border-color:#e1e1e1}.d2h-code-line-prefix,.d2h-code-linenumber,.d2h-code-side-linenumber,.d2h-emptyplaceholder{-webkit-user-select:none;-moz-user-select:none;user-select:none}.d2h-code-linenumber,.d2h-code-side-linenumber{direction:rtl}.d2h-del{background-color:#fee8e9;border-color:#e9aeae}.d2h-ins{background-color:#dfd;border-color:#b4e2b4}.d2h-info{background-color:#f8fafd;border-color:#d5e4f2;color:rgba(0,0,0,.3)}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{color:#3572b0;text-decoration:none}.d2h-file-list-wrapper a:visited{color:#3572b0}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{display:flex;text-align:left}.d2h-file-list{display:block;list-style:none;margin:0;padding:0}.d2h-file-list>li{border-bottom:1px solid #ddd;margin:0;padding:5px 10px}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{cursor:pointer;display:none;font-size:10px}.d2h-icon{fill:currentColor;margin-right:10px;vertical-align:middle}.d2h-deleted{color:#c33}.d2h-added{color:#399839}.d2h-changed{color:#d0b44c}.d2h-moved{color:#3572b0}.d2h-tag{background-color:#fff;display:flex;font-size:10px;margin-left:5px;padding:0 2px}.d2h-deleted-tag{border:1px solid #c33}.d2h-added-tag{border:1px solid #399839}.d2h-changed-tag{border:1px solid #d0b44c}.d2h-moved-tag{border:1px solid #3572b0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dropdown-button-group .no-left-border-radius{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-button-group .no-right-border-radius{border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-button-group .btn{line-height:normal;border:0}.dropdown-button-group .btn-group-xs>.btn,.dropdown-button-group .btn-xs,.dropdown-button-group .btn-xs .btn-label{padding:2px 3px;font-size:13px}.dropdown-button-group .v-popper .text-right{margin-top:5px}.dropdown-button-group .v-popper .trigger{height:100%}.dropdown-button-group .v-popper .trigger .icon-container{height:100%;padding:10px 10px 10px 10px}.dropdown-button-group .v-popper .trigger .icon-container i{transform:scale(1)}.dropdown-button-group .v-popper .trigger .icon-container.btn-xs{padding:2px 4px 4px 4px}.dropdown-button-group .v-popper .trigger .icon-container.btn-sm{padding:10px 10px 10px 10px}.dropdown-button-group .v-popper .trigger .icon-container.btn-lg{padding:18px 10px 10px 10px}.dropdown-button-group .v-popper .trigger .icon-container:focus{outline-style:none;box-shadow:none;border-color:transparent}.dropdown-button-group .dropdown-button{background:var(--tooltip-bg);color:var(--link-text);padding:0;display:inline-flex}.dropdown-button-group .dropdown-button .wrapper-content button{border-right:0}.dropdown-button-group .dropdown-button .icon-chevron-down,.dropdown-button-group .dropdown-button>*{color:var(--primary);background-color:transparent}.dropdown-button-group .dropdown-button.bg-primary:hover{background:var(--accent-btn-hover)}.dropdown-button-group .dropdown-button.one-action{position:relative}.dropdown-button-group .dropdown-button.one-action>.btn{padding:15px 35px 15px 15px}.dropdown-button-group .dropdown-button.one-action .v-popper .trigger{position:absolute;top:0;right:0;left:0;bottom:0}.dropdown-button-group .dropdown-button.one-action .v-popper .trigger BUTTON{position:absolute;right:0}.dropdown-button-group .v-popper__popper{border:none;margin-top:0}.dropdown-button-group .v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{display:none}.dropdown-button-group .v-popper__popper .v-popper__inner{color:var(--dropdown-text);background-color:var(--dropdown-bg);border:1px solid var(--dropdown-border);padding:0;text-align:left}.dropdown-button-group .v-popper__popper .v-popper__inner LI{padding:10px}.dropdown-button-group .v-popper__popper .v-popper__inner LI.divider{padding-top:0;padding-bottom:0}.dropdown-button-group .v-popper__popper .v-popper__inner LI.divider>.divider-inner{padding:0;border-bottom:1px solid var(--dropdown-divider);width:125%;margin:0 auto}.dropdown-button-group .v-popper__popper .v-popper__inner LI:not(.divider):hover{background-color:var(--dropdown-hover-bg);color:var(--dropdown-hover-text);cursor:pointer}.dropdown-button-group .user-info{border-bottom:1px solid var(--border);display:block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menu[data-v-375e9eb4],.root[data-v-375e9eb4]{position:absolute}.menu[data-v-375e9eb4]{visibility:hidden;top:0;left:0;z-index:56;min-width:145px;color:var(--dropdown-text);background-color:var(--dropdown-bg);border:1px solid var(--dropdown-border);border-radius:5px;box-shadow:0 5px 20px var(--shadow)}.menu LI[data-v-375e9eb4]{align-items:center;display:flex;padding:8px 10px;margin:0}.menu LI[data-v-375e9eb4]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:-2px}.menu LI[disabled][data-v-375e9eb4]{cursor:not-allowed!important;color:var(--disabled-text)}.menu LI.divider[data-v-375e9eb4]{padding:0;border-bottom:1px solid var(--dropdown-divider)}.menu LI[data-v-375e9eb4]:not(.divider):hover{background-color:var(--dropdown-hover-bg);color:var(--dropdown-hover-text);cursor:pointer}.menu LI .icon[data-v-375e9eb4]{display:unset;width:14px;text-align:center;margin-right:8px}.menu LI.no-actions[data-v-375e9eb4],.menu LI.no-actions[data-v-375e9eb4]:hover{color:var(--disabled-text)}.menu LI.no-actions[data-v-375e9eb4]:hover{background-color:initial;cursor:default}.background[data-v-375e9eb4]{position:fixed;top:0;left:0;right:0;bottom:0;opacity:0;z-index:55}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal-overlay{position:absolute;top:0;left:0;width:100vw;height:100vh;background-color:var(--overlay-bg);display:flex;justify-content:center;align-items:center;z-index:53}.modal-overlay .modal-container{background-color:var(--modal-bg);border-radius:var(--border-radius);max-height:95vh;overflow:auto;border:2px solid var(--modal-border)}.modal-fade-enter-active,.modal-fade-leave-active{transition:opacity .2s}.modal-fade-enter,.modal-fade-leave-to{opacity:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".manual-refresh i[data-v-21c97bb9]{margin:0 0 0 8px!important;font-size:1rem!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".banner-graphic-area[data-v-444cefe6]{position:relative}.banner-graphic-area .graphic[data-v-444cefe6]{display:flex;flex-direction:column;overflow:hidden}.banner-graphic-area .graphic>img.banner[data-v-444cefe6]{flex:1;-o-object-fit:cover;object-fit:cover}.banner-graphic-area .title[data-v-444cefe6]{display:flex;align-items:center;position:absolute;text-align:center;top:0;height:100%;width:100%}.banner-graphic-area.banner-text-center .title[data-v-444cefe6]{justify-content:center;margin-top:-20px}.banner-graphic-area.banner-text-left .title[data-v-444cefe6]{justify-content:left;padding-left:20px}.banner-graphic-height[data-v-444cefe6]{height:var(--banner-graphic-height,200px)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".button-dropdown.btn-sm[data-v-2ab9ff7a] >.vs__dropdown-toggle .vs__actions:after{font-size:1.6rem}.button-dropdown.btn-lg[data-v-2ab9ff7a] >.vs__dropdown-toggle .vs__actions:after{font-size:2.6rem}.button-dropdown[data-v-2ab9ff7a]{background:var(--accent-btn);border:solid 1px var(--link);color:var(--link);padding:0}.button-dropdown.vs--open[data-v-2ab9ff7a] {outline:none;box-shadow:none}.button-dropdown[data-v-2ab9ff7a]:hover .vs__dropdown-toggle .vs__actions,.button-dropdown[data-v-2ab9ff7a]:hover .vs__selected-options{background:var(--accent-btn-hover)}.button-dropdown[data-v-2ab9ff7a]:hover .vs__selected-options .vs__selected button{background-color:transparent;color:var(--accent-btn-hover-text)}.button-dropdown[data-v-2ab9ff7a]:hover .vs__dropdown-toggle .vs__actions:after{color:var(--accent-btn-hover-text)}.button-dropdown[data-v-2ab9ff7a] >.vs__dropdown-toggle{width:100%;display:grid;grid-template-columns:75% 25%;border:none;background:transparent}.button-dropdown[data-v-2ab9ff7a] >.vs__dropdown-toggle .vs__actions:after{color:var(--link);line-height:1}.button-dropdown[data-v-2ab9ff7a] .vs__selected-options .vs__selected{margin:unset;border:none}.button-dropdown[data-v-2ab9ff7a] .vs__selected-options .vs__selected button{border:none;background:transparent;color:var(--link)}.button-dropdown[data-v-2ab9ff7a] .vs__selected-options .vs__search{position:absolute;opacity:0;padding:0}.button-dropdown[data-v-2ab9ff7a] .vs__dropdown-menu{min-width:unset;width:-moz-fit-content;width:fit-content}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".borderless[data-v-a3361b40]{background-color:transparent;border:none}.borderless[data-v-a3361b40]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:-2px}.borderless[data-v-a3361b40]:focus,.borderless[data-v-a3361b40]:hover{background-color:var(--accent-btn);box-shadow:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".code-mirror.code-mirror-container:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.code-mirror.as-text-area .codemirror-container{min-height:40px;position:relative;display:block;box-sizing:border-box;width:100%;padding:10px;background-color:var(--input-bg);border-radius:var(--border-radius);border:solid var(--border-width) var(--input-border);color:var(--input-text)}.code-mirror.as-text-area .codemirror-container:hover{border-color:var(--input-hover-border)}.code-mirror.as-text-area .codemirror-container.focus,.code-mirror.as-text-area .codemirror-container:focus{outline:none;border-color:var(--primary-border)}.code-mirror.as-text-area .codemirror-container .CodeMirror-code .CodeMirror-line .cm-markdown-single-trailing-space-even:before,.code-mirror.as-text-area .codemirror-container .CodeMirror-code .CodeMirror-line .cm-markdown-single-trailing-space-odd:before,.code-mirror.as-text-area .codemirror-container .CodeMirror-code .CodeMirror-line:not(:last-child)>span:after{color:var(--muted);position:absolute;line-height:20px;pointer-events:none}.code-mirror.as-text-area .codemirror-container .CodeMirror-code .CodeMirror-line:not(:last-child)>span:after{content:\\\"↵\\\";margin-left:2px}.code-mirror.as-text-area .codemirror-container .CodeMirror-code .CodeMirror-line .cm-markdown-single-trailing-space-even:before,.code-mirror.as-text-area .codemirror-container .CodeMirror-code .CodeMirror-line .cm-markdown-single-trailing-space-odd:before{font-weight:700;content:\\\"·\\\"}.code-mirror.as-text-area .codemirror-container .CodeMirror-lines{color:var(--input-text);padding:0}.code-mirror.as-text-area .codemirror-container .CodeMirror-lines .CodeMirror-line>span>span.cm-overlay{font-family:monospace}.code-mirror.as-text-area .codemirror-container .CodeMirror-lines .CodeMirror-line>span{font-family:Lato,arial,helvetica,sans-serif}.code-mirror.as-text-area .codemirror-container .CodeMirror-sizer{min-height:20px}.code-mirror.as-text-area .codemirror-container .CodeMirror-selected{background-color:var(--primary)!important}.code-mirror.as-text-area .codemirror-container .CodeMirror-selectedtext{color:var(--primary-text)}.code-mirror.as-text-area .codemirror-container .CodeMirror-line::selection,.code-mirror.as-text-area .codemirror-container .CodeMirror-line>span::selection,.code-mirror.as-text-area .codemirror-container .CodeMirror-line>span>span::selection{color:var(--primary-text);background-color:var(--primary)}.code-mirror.as-text-area .codemirror-container .CodeMirror-line::-moz-selection,.code-mirror.as-text-area .codemirror-container .CodeMirror-line>span::-moz-selection,.code-mirror.as-text-area .codemirror-container .CodeMirror-line>span>span::-moz-selection{color:var(--primary-text);background-color:var(--primary)}.code-mirror.as-text-area .codemirror-container .CodeMirror-gutters .CodeMirror-foldgutter:empty{display:none}.code-mirror{position:relative;margin-bottom:20px}.code-mirror .escape-text{font-size:12px;position:absolute;bottom:-20px;left:0}.code-mirror .codemirror-container{z-index:0;font-size:inherit!important}.code-mirror .codemirror-container .CodeMirror{height:auto;background:none}.code-mirror .codemirror-container .CodeMirror-gutters{background:inherit}.code-mirror .codemirror-container .CodeMirror-wrap pre{word-break:break-word}.code-mirror .keymap.overlay{position:absolute;display:flex;top:7px;right:7px;z-index:1;cursor:pointer}.code-mirror .keymap.overlay .keymap-indicator{width:48px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;color:var(--darker);background-color:var(--subtle-overlay-bg);font-size:12px}.code-mirror .keymap.overlay .keymap-indicator .close-indicator{width:0}.code-mirror .keymap.overlay .keymap-indicator .close-indicator .icon-close{color:var(--primary);opacity:0}.code-mirror .keymap.overlay .keymap-indicator .keymap-icon{font-size:24px;opacity:.8;transition:margin-right .1s ease-in-out}.code-mirror .keymap.overlay .keymap-indicator:hover{border:1px solid var(--primary);border-radius:var(--border-radius)}.code-mirror .keymap.overlay .keymap-indicator:hover .close-indicator{margin-left:-6px;width:auto}.code-mirror .keymap.overlay .keymap-indicator:hover .close-indicator .icon-close{opacity:1;transition:opacity .1s ease-in-out .1s}.code-mirror .keymap.overlay .keymap-indicator:hover .keymap-icon{opacity:.6;margin-right:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"h2[data-v-50534f1b]{display:flex;align-items:center}h2 i[data-v-50534f1b]{font-size:12px;margin-left:5px}.support-link[data-v-50534f1b]:not(:last-child){margin-bottom:15px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-btn[data-v-2d7c8bd6]{min-height:24px;min-width:24px;justify-content:center}.bg-transparent[data-v-2d7c8bd6]:active{background-color:var(--primary-keyboard-focus);color:var(--primary-text)}.bg-transparent[data-v-2d7c8bd6]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.role-primary[data-v-2d7c8bd6]:active{background-color:var(--primary-keyboard-focus);color:var(--primary-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cru-resource-yaml-container .resource-yaml .yaml-editor[data-v-05345bf3]{min-height:100px}.create-resource-container .resource-container[data-v-05345bf3]{display:flex;flex-direction:column}.create-resource-container .subtype-banner .round-image[data-v-05345bf3]{background-color:var(--primary)}.create-resource-container .subtype-banner[data-v-05345bf3]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.title[data-v-05345bf3]{margin-top:20px}.title.with-description[data-v-05345bf3]{margin-top:0}.subtype-container[data-v-05345bf3]{position:relative;display:flex;height:100%}.subtype-body[data-v-05345bf3]{flex:1;padding:10px}.subtype-logo[data-v-05345bf3]{align-items:center;display:flex;justify-content:center;min-width:100px;min-height:100px;overflow:hidden;background-color:var(--box-bg)}.subtype-logo img[data-v-05345bf3]{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}form.create-resource-container .cru__footer[data-v-05345bf3]{border-top:var(--header-border-size) solid var(--header-border)}.cru[data-v-05345bf3],.cru__form[data-v-05345bf3]{display:flex;flex-direction:column;flex-grow:1}.cru__content[data-v-05345bf3]{flex-grow:1}.cru__content-wizard[data-v-05345bf3]{display:flex}.cru__footer[data-v-05345bf3]{right:0;bottom:0;height:60px;box-sizing:border-box;margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:10px 24px}.cru__errors[data-v-05345bf3],.cru__footer[data-v-05345bf3]{position:sticky;background-color:var(--header-bg)}.cru__errors[data-v-05345bf3]{top:0;z-index:1;margin:10px 0}.description[data-v-05345bf3]{margin-bottom:15px;margin-top:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cru-resource-footer{display:flex;justify-content:flex-end;margin-top:20px;z-index:19}.cru-resource-footer .btn{margin-left:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".with-copy[data-v-12df2354]{border:solid 1px var(--border);padding:10px;position:relative;background-color:var(--input-bg);border-radius:var(--border-radius);border:solid var(--border-width) var(--input-border);contain:inline-size}.with-copy h5[data-v-12df2354]{margin-bottom:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:-moz-fit-content;width:fit-content;max-width:calc(100% - 150px)}.with-copy .conceal-wrapper[data-v-12df2354]{overflow-x:auto;padding-bottom:10px;margin-bottom:-10px}.with-copy .conceal[data-v-12df2354]{white-space:nowrap;display:block}.with-copy .conceal[data-v-12df2354]:before{content:\\\"••••••••••••••••••••••••\\\"}.with-copy .action-group[data-v-12df2354]{position:absolute;top:-1px;right:-1px;white-space-collapse:collapse;display:flex;flex-direction:row;justify-content:flex-end}.with-copy .action-group button[data-v-12df2354]{border-radius:0}.with-copy .action-group button[data-v-12df2354]:first-of-type{border-radius:0 0 0 var(--border-radius)}.with-copy .action-group button.sensitive[data-v-12df2354]{margin-right:-1px;padding:12px 16px}.monospace[data-v-12df2354]{white-space:pre-wrap;word-wrap:break-all}.more-characters[data-v-12df2354]{margin-top:8px;display:inline-block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".detail-text-tooltip.v-popper__popper.v-popper--theme-tooltip{overflow-wrap:anywhere}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".detail-top:not(.empty){padding-top:10px;border-top:1px solid var(--border);margin-top:10px}.detail-top .namespaceLinkList:not(:first-child):before{content:\\\", \\\"}.detail-top .tags{display:inline-flex;flex-direction:row;flex-wrap:wrap;position:relative;top:-2px}.detail-top .tags .label{position:relative;top:4px}.detail-top .tags .tag{margin:2px 4px 0 2px;font-size:12px}.detail-top .annotation{margin-top:10px}.detail-top .label{color:var(--input-label);margin:0 4px 0 0}.detail-top__label-button{padding:4px}.detail-top .details{display:flex;flex-direction:row;flex-wrap:wrap}.detail-top .details .detail{margin-right:20px;margin-bottom:3px}.detail-top .details:not(:first-of-type){margin-top:3px}.detail-top>div:not(:last-of-type){margin-bottom:4px}.detail-top .icon{vertical-align:top}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".chrome[data-v-72e8ee84]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column}.chrome>.header[data-v-72e8ee84]{display:flex;flex-direction:row;align-items:center;background-color:var(--body-bg);border-bottom:1px solid var(--border);height:var(--header-height)}.chrome>.header>.title[data-v-72e8ee84]{display:flex;align-items:center;flex:1;font-size:16px}.chrome>.header>.actions button[data-v-72e8ee84]{display:inline-flex;width:24px;height:24px;color:var(--body-text);justify-content:center}.chrome .body[data-v-72e8ee84]{background-color:var(--drawer-body-bg);flex:1;overflow-y:scroll}.chrome .footer[data-v-72e8ee84]{display:flex;flex-direction:row;justify-content:flex-end;background-color:var(--body-bg);border-top:1px solid var(--border);height:72px}.chrome .footer .actions[data-v-72e8ee84]>*{margin-left:16px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".drawer-card[data-v-9f186538]{background-color:var(--body-bg);border-radius:var(--border-radius-md);padding:16px;max-width:100%;width:100%;position:relative}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".config-tab[data-v-7d0d0cce] .overlay-content-mode{left:0;top:0}.config-tab[data-v-7d0d0cce] .cru-resource-footer{display:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".yaml-tab[data-v-57e9a5ee] .codemirror-container{background-color:var(--body-bg);border-radius:var(--border-radius-md);padding:16px}.yaml-tab[data-v-57e9a5ee] .codemirror-container .CodeMirror,.yaml-tab[data-v-57e9a5ee] .codemirror-container .CodeMirror-gutter{background-color:var(--body-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".empty-product-page[data-v-53430412]{align-items:center;display:flex;justify-content:center;opacity:.75}.empty-product-page>img[data-v-53430412]{width:128px;margin-bottom:20px}.empty-product-page .err-messages[data-v-53430412]{display:flex;align-items:center;text-align:center;flex-direction:column}.empty-product-page .err-messages[data-v-53430412]>*{margin-bottom:8px;font-size:16px}.empty-product-page .err-messages[data-v-53430412]>:last-child{font-weight:700;color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".invisible[data-v-112146fc]{display:inline-block;min-width:28px}.project-namespaces[data-v-112146fc] .project-name{line-height:30px}.project-namespaces[data-v-112146fc] .project-bar{contain:inline-size;display:flex;flex-direction:row;justify-content:space-between}.project-namespaces[data-v-112146fc] .project-bar .group-tab{max-width:calc(100% - 230px)}.project-namespaces[data-v-112146fc] .project-bar .project-name{display:flex;flex-direction:row;align-items:center}.project-namespaces[data-v-112146fc] .project-bar .project-name span:first-child{padding-right:8px}.project-namespaces[data-v-112146fc] .project-bar .project-name span:last-child{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.project-namespaces[data-v-112146fc] .project-bar.has-description .right{margin-top:5px}.project-namespaces[data-v-112146fc] .project-bar.has-description .group-tab,.project-namespaces[data-v-112146fc] .project-bar.has-description .group-tab:after{height:50px}.project-namespaces[data-v-112146fc] .project-bar.has-description .group-tab:after{right:-20px}.project-namespaces[data-v-112146fc] .project-bar.has-description .group-tab .description{margin-top:-20px}.project-namespaces[data-v-112146fc] .namespace-name{display:flex;align-items:center}.project-namespaces[data-v-112146fc] .namespace-name .icon-istio{color:var(--primary)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".psa-tooltip{margin:3px 0;padding:0 8px 0 22px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".root[data-v-639a852a]{max-width:100%;position:relative;overflow:auto}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../css-loader/dist/cjs.js??clonedRuleSet-23.use[1]!../../../vue-loader/dist/stylePostLoader.js!../../../postcss-loader/dist/cjs.js??clonedRuleSet-23.use[2]!../../../postcss-loader/dist/cjs.js??clonedRuleSet-23.use[3]!../../../diff2html/bundles/css/diff2html.min.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-639a852a] .d2h-wrapper .d2h-file-header{display:none}[data-v-639a852a] .d2h-wrapper .d2h-file-wrapper{border-color:var(--diff-border)}[data-v-639a852a] .d2h-wrapper .d2h-diff-table{font-family:Menlo,Consolas,monospace;font-size:13px}[data-v-639a852a] .d2h-wrapper .d2h-code-side-emptyplaceholder,[data-v-639a852a] .d2h-wrapper .d2h-emptyplaceholder{border-color:var(--diff-linenum-border);background-color:var(--diff-empty-placeholder)}[data-v-639a852a] .d2h-wrapper .d2h-code-linenumber,[data-v-639a852a] .d2h-wrapper .d2h-code-side-linenumber{background-color:var(--diff-linenum-bg);color:var(--diff-linenum);border-color:var(--diff-linenum-border);border-left:0}[data-v-639a852a] .d2h-wrapper .d2h-code-line del,[data-v-639a852a] .d2h-wrapper .d2h-code-side-line del{background-color:var(--diff-line-del-bg)}[data-v-639a852a] .d2h-wrapper .d2h-code-line ins,[data-v-639a852a] .d2h-wrapper .d2h-code-side-line ins{background-color:var(--diff-line-ins-bg)}[data-v-639a852a] .d2h-wrapper .d2h-del{background-color:var(--diff-del-bg);border-color:var(--diff-del-border);color:var(--body-text)}[data-v-639a852a] .d2h-wrapper .d2h-ins{background-color:var(--diff-ins-bg);border-color:var(--diff-ins-border);color:var(--body-text)}[data-v-639a852a] .d2h-wrapper .d2h-info{background-color:var(--diff-header-bg);color:var(--diff-header);border-color:var(--diff-header-border)}[data-v-639a852a] .d2h-wrapper .d2h-file-diff .d2h-del.d2h-change{background-color:var(--diff-chg-del)}[data-v-639a852a] .d2h-wrapper .d2h-file-diff .d2h-ins.d2h-change{background-color:var(--diff-chg-ins)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vertical[data-v-01996ade]{flex-direction:column;width:100%}.subtle[data-v-01996ade]{opacity:.7}.message-icon[data-v-01996ade]{display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column}.message-icon>I[data-v-01996ade]{font-size:64px;margin-bottom:20px}.message-icon>I.info[data-v-01996ade]{color:var(--primary)}.message-icon>I.error[data-v-01996ade]{color:var(--error)}.message-icon>I.warning[data-v-01996ade]{color:var(--warning)}.message-icon>I.success[data-v-01996ade]{color:var(--success)}.message-icon>.message[data-v-01996ade]{font-size:20px;margin-bottom:40px;max-width:60%;text-align:center;line-height:30px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"img.svg-icon[data-v-39f189f2]{filter:var(--v63011bc5)}button:hover>img.svg-icon[data-v-39f189f2],li:hover>img.svg-icon[data-v-39f189f2]{filter:var(--v2ce8fd20)}.side-menu .category div a>img.svg-icon[data-v-39f189f2]{height:24px;width:24px;filter:var(--v63011bc5)}.side-menu .category div a:hover>img.svg-icon[data-v-39f189f2]{filter:var(--v2ce8fd20)}.side-menu .category div a.active-menu-link>img.svg-icon[data-v-39f189f2],.side-menu .category div a.active-menu-link>img.svg-icon[data-v-39f189f2]:hover{filter:var(--v73a02a52)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".indented-panel{height:100%;width:90%;margin-left:5%}@media only screen and (max-width:992px){.indented-panel{margin:0 20px;width:auto}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".info-box[data-v-1c5683df]{border:2px solid var(--tabbed-border);padding:10px;margin-bottom:20px;border-radius:var(--border-radius);flex-grow:1;flex-basis:0;position:relative}.info-box .stepped[data-v-1c5683df]{padding-left:40px}.info-box .step-number[data-v-1c5683df]{border-radius:var(--border-radius);background:var(--secondary);color:var(--input-text);display:inline-block;padding:5px 10px}.info-box .step-list[data-v-1c5683df]{margin:0}.info-box .info-column[data-v-1c5683df]:not(:last-child){border-right:1px solid var(--tabbed-border)}.info-box .info-row[data-v-1c5683df]{margin-bottom:10px}.info-box .info-row .info-row-label[data-v-1c5683df]{padding-top:2px;display:inline-block}.info-box .info-column label[data-v-1c5683df],.info-box .info-row label[data-v-1c5683df]{color:var(--input-label)}.info-box .info-column .usage[data-v-1c5683df]{margin-bottom:10px}.info-box .info-column .usage label[data-v-1c5683df]{display:inline-block;font-size:12px;padding-top:6px}.info-box .info-column .flex-item-half[data-v-1c5683df]{align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".overlay[data-v-fac347aa]{align-items:center;background-color:var(--subtle-overlay-bg);display:flex;justify-content:center;position:absolute;bottom:0;top:0;left:0;right:0;text-align:center;z-index:12}.overlay-main-mode[data-v-fac347aa]{top:var(--header-height);z-index:51}.overlay-content-mode[data-v-fac347aa]{left:calc(var(--nav-width));top:var(--header-height)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".footer[data-v-00744f30]{width:100%;display:flex;justify-content:center}.banner[data-v-00744f30]{margin-bottom:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal{border-radius:var(--border-radius);max-height:100vh}.modal.card-container{box-shadow:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".percentage-bar[data-v-4ade54a6]{display:flex;flex-direction:row}.percentage-bar .percentage-value[data-v-4ade54a6]{word-break:keep-all}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".progress[data-v-154bda8a]{display:block;border-radius:90px;background-color:var(--progress-bg);height:10px;width:100px}.progress .piece[data-v-154bda8a]{display:inline-block;height:10px;border-radius:0;border-right:1px solid var(--progress-divider);vertical-align:top}.progress .piece[data-v-154bda8a]:first-child{border-top-left-radius:90px;border-bottom-left-radius:90px}.progress .piece[data-v-154bda8a]:last-child{border-top-right-radius:90px;border-bottom-right-radius:90px;border-right:0}.piece.bg-success[data-v-154bda8a]:only-child{opacity:.5}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".more[data-v-53ecaf14]{margin-top:4px;cursor:help;font-size:.8em}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".message[data-v-3eb6f915]{margin:0;margin-top:-2px;line-height:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vertical-gap[data-v-43905492]{height:12px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".detail-card[data-v-199e5bcf]{padding:16px;border-radius:var(--border-radius-md);border:1px solid var(--border)}.detail-card .heading[data-v-199e5bcf]{display:flex;justify-content:space-between;height:32px}.detail-card .heading .title[data-v-199e5bcf]{font-size:18px;font-weight:600;line-height:21px}.detail-card .body[data-v-199e5bcf]{display:flex;flex-direction:column;justify-content:flex-start}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".copy-to-clipboard[data-v-24cd76d6]{z-index:2;display:inline-flex;width:36px;height:36px;font-size:14px;border-radius:50%;justify-content:center;align-items:center;padding:0;line-height:normal;min-height:auto;border:1px solid var(--primary);color:var(--primary);background-color:var(--body-bg)}.copy-to-clipboard[data-v-24cd76d6]:hover{color:var(--body-text)}.copy-to-clipboard.copied[data-v-24cd76d6]{background-color:var(--success);border-color:var(--success-border);color:var(--success-text);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.copy-to-clipboard[data-v-24cd76d6]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".identifying-information[data-v-23333732]{display:flex;flex-direction:column}.identifying-information .row[data-v-23333732]{gap:8px}.identifying-information .row[data-v-23333732]:after,.identifying-information .row[data-v-23333732]:before{display:none}.identifying-information .row[data-v-23333732]:not(:last-of-type){margin-bottom:8px}.identifying-information .row .full-custom-value[data-v-23333732]{flex:1;min-width:0}.identifying-information .row .full-custom-value[data-v-23333732] .popover-card-target{width:100%}.identifying-information .row .value[data-v-23333732]{display:flex;flex-direction:row;align-items:center;flex:1}.identifying-information .row .value>div[data-v-23333732],.identifying-information .row .value>span[data-v-23333732]{max-width:100%}.identifying-information .row .value[data-v-23333732],.identifying-information .row .value>div[data-v-23333732],.identifying-information .row .value>span[data-v-23333732]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-wrap:break-word}.identifying-information .row .label[data-v-23333732]{width:30%;min-width:-moz-min-content;min-width:min-content}.identifying-information .row .status[data-v-23333732]{display:inline-block;border-radius:50%;width:8px;height:8px;margin-right:12px}.identifying-information .row .status.success[data-v-23333732]{background-color:var(--success)}.identifying-information .row .status.warning[data-v-23333732]{background-color:var(--warning)}.identifying-information .row .status.error[data-v-23333732]{background-color:var(--error)}.identifying-information .row .status.info[data-v-23333732]{background-color:var(--info)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-value[data-v-574d2bc8]{display:flex;flex-direction:column;align-items:flex-start}.key-value .count[data-v-574d2bc8]{margin-left:24px}.key-value .heading[data-v-574d2bc8]{margin-bottom:8px}.key-value .row[data-v-574d2bc8]{display:block;width:100%;display:inline-block}.key-value .row[data-v-574d2bc8]:not(:nth-child(2)){margin-top:4px}.key-value .show-all[data-v-574d2bc8]{margin-top:8px}.key-value .no-rows[data-v-574d2bc8]{line-height:21px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-value-row[data-v-18944324]{display:inline-block;position:relative;padding:0}.key-value-row .copy-to-clipboard[data-v-18944324]{position:fixed;right:-20px;top:-100vh;z-index:20}.key-value-row[data-v-18944324],.key-value-row .btn[data-v-18944324],.key-value-row .rc-tag[data-v-18944324]{max-width:100%}.key-value-row .rc-tag[data-v-18944324],.key-value-row .tag-data[data-v-18944324]{display:inline-block;line-height:normal}.key-value-row .tag-data[data-v-18944324]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.key-value-row .btn.btn-medium.rc-button.variant-ghost[data-v-18944324]{line-height:normal;min-height:auto;padding:0}.key-value-row.active.show-preview .copy-to-clipboard[data-v-18944324]{position:fixed}.key-value-row.active .copy-to-clipboard:focus-visible .rc-tag .tag-data[data-v-18944324],.key-value-row.active button:focus-visible .rc-tag .tag-data[data-v-18944324],.key-value-row.active button:hover .rc-tag .tag-data[data-v-18944324]{padding-right:22px}.key-value-row.active .copy-to-clipboard:focus-visible+.copy-to-clipboard[data-v-18944324],.key-value-row.active button:focus-visible+.copy-to-clipboard[data-v-18944324],.key-value-row.active button:hover+.copy-to-clipboard[data-v-18944324]{position:absolute;top:-6px}.key-value-row.active .copy-to-clipboard[data-v-18944324]:focus-visible,.key-value-row.active .copy-to-clipboard[data-v-18944324]:hover{position:absolute;top:-6px}.key-value-row.active .btn:has(+.copy-to-clipboard:focus-visible) .rc-tag .tag-data[data-v-18944324],.key-value-row.active .btn:has(+.copy-to-clipboard:hover) .rc-tag .tag-data[data-v-18944324]{padding-right:22px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".metadata .identifying-info[data-v-1070d512]{min-width:0}.metadata .labels-and-annotations-empty[data-v-1070d512]{grid-column:span 2}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-8af17bd2] .CodeMirror-gutters{display:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".preview-mouse-catcher[data-v-5b728606]{cursor:default;position:fixed;top:0;bottom:0;left:0;right:0;z-index:120}.preview[data-v-5b728606]{cursor:default;position:fixed;right:var(--v068f897a);top:var(--v31006f9a);z-index:121;display:flex;flex-direction:column;min-width:420px;max-width:550px;max-height:550px;padding:16px;background-color:var(--body-bg);border:1px solid var(--border);border-radius:var(--border-radius-md)}.preview[data-v-5b728606]:focus{outline:none}.preview .title[data-v-5b728606]{margin-bottom:16px;font-size:14px;font-style:normal;font-weight:400}.preview .content[data-v-5b728606]{flex:1;overflow:scroll}.preview .copy-to-clipboard[data-v-5b728606]{position:absolute;right:-8px;top:-8px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".spaced-row[data-v-be2be6f0]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:dense;grid-gap:24px;justify-content:space-evenly;min-width:740px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"h1.title[data-v-1e04f798]{display:inline-block;align-items:center;display:flex;flex-direction:row}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".top[data-v-9aaa96a4]{display:flex;flex-direction:row;justify-content:space-between;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".title-bar[data-v-798952e4]{min-width:740px}.title-bar .badge-state[data-v-798952e4]{font-size:16px;margin-left:12px;position:relative;flex:0 0 auto}.title-bar .actions[data-v-798952e4]{display:flex;align-items:center;flex:0 0 auto;margin-left:16px}.title-bar .show-configuration[data-v-798952e4],.title-bar[data-v-798952e4] .actions>button{margin-left:16px}.title-bar[data-v-798952e4] button[data-testid=masthead-action-menu]{border-radius:4px;width:35px;height:40px;margin-left:16px;display:inline-flex;flex-direction:row;justify-content:center;align-items:center}.title-bar .description[data-v-798952e4]{max-width:60%}.title-bar .title[data-v-798952e4]{flex:1 1 auto;min-width:0}.title-bar .resource-name[data-v-798952e4]{display:inline-block;flex:0 1 auto;min-width:0;white-space:nowrap;overflow-x:hidden;overflow-y:clip;text-overflow:ellipsis;margin-left:4px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".confirm-modal .btn[data-v-715d956d]{margin:0 10px}.confirm-modal .body[data-v-715d956d]{min-height:75px;padding:10px 0 0 15px}.confirm-modal .body p[data-v-715d956d]{margin-top:10px}.confirm-modal .header[data-v-715d956d]{background-color:var(--error);padding:15px 0 0 15px;height:50px}.confirm-modal .header h4[data-v-715d956d]{color:#fff}.confirm-modal .footer[data-v-715d956d]{border-top:1px solid var(--border);text-align:center;padding:10px 0 0 15px;height:60px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".new.state-banner[data-v-7f6314f2]{margin:0;margin-top:16px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".new.state-banner[data-v-0243210c]{margin:0;margin-top:16px}[data-v-0243210c] .metadata-section{margin-top:16px;margin-bottom:24px}.cards-section[data-v-0243210c]{margin:0;margin-bottom:24px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".masthead[data-v-0f75302f]{padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:10px}HEADER[data-v-0f75302f]{margin:0;grid-template-columns:minmax(0,1fr) auto}.primaryheader[data-v-0f75302f],.primaryheader h1[data-v-0f75302f]{display:flex;flex-direction:row;align-items:center}.primaryheader h1[data-v-0f75302f]{margin:0 0 0 -5px;overflow:hidden}.primaryheader h1 .masthead-resource-title[data-v-0f75302f]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.primaryheader h1 .masthead-resource-list-link[data-v-0f75302f]{margin:5px}.subheader[data-v-0f75302f]{display:flex;flex-direction:row;color:var(--input-label)}.subheader[data-v-0f75302f]>*{margin:5px 20px 5px 0}.subheader .live-data[data-v-0f75302f]{color:var(--body-text);margin-left:3px}.state-banner[data-v-0f75302f]{margin:3px 0 0 0}.masthead-state[data-v-0f75302f]{margin-left:8px;font-size:medium}.masthead-istio .icon[data-v-0f75302f]{vertical-align:middle;color:var(--primary)}.left-right-split[data-v-0f75302f]{display:grid;align-items:center}.left-right-split .left-half[data-v-0f75302f]{grid-column:1}.left-right-split .right-half[data-v-0f75302f]{grid-column:2}div.actions-container>div.actions[data-v-0f75302f]{display:flex;flex-direction:row;justify-content:flex-end}.resource-external[data-v-0f75302f]{font-size:18px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".flex-content[data-v-64dc1332]{display:flex;flex-direction:column;flex-grow:1}.cru__errors[data-v-64dc1332]{position:sticky;top:0;z-index:1;background-color:var(--header-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".title[data-v-7dd81672]{align-items:center;display:flex}.title h1[data-v-7dd81672]{margin:0}header[data-v-7dd81672]{margin-bottom:20px}header.with-subheader[data-v-7dd81672]{grid-template-areas:\\\"type-banner type-banner\\\" \\\"title actions\\\" \\\"sub-header sub-header\\\" \\\"state-banner state-banner\\\"}.sub-header[data-v-7dd81672]{grid-area:sub-header}.sub-header a[data-v-7dd81672]{display:inline-block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-loading-indicator[data-v-6457c305]{border:1px solid var(--link);border-radius:10px;position:relative;width:-moz-min-content;width:min-content;overflow:hidden}.resource-loading-indicator .resource-loader[data-v-6457c305]:last-child{position:absolute;top:0;background-color:var(--link);color:var(--link-text);overflow:hidden;white-space:nowrap}.resource-loading-indicator .resource-loader[data-v-6457c305]{padding:1px 10px;width:-moz-max-content;width:max-content}.resource-loading-indicator .resource-loader .rl-bg[data-v-6457c305],.resource-loading-indicator .resource-loader .rl-fg[data-v-6457c305]{align-content:center;display:flex}.resource-loading-indicator .resource-loader .rl-bg>i[data-v-6457c305],.resource-loading-indicator .resource-loader .rl-fg>i[data-v-6457c305]{font-size:18px;line-height:18px}.resource-loading-indicator .resource-loader .rl-bg>span[data-v-6457c305],.resource-loading-indicator .resource-loader .rl-fg>span[data-v-6457c305]{margin-left:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header[data-v-377cbd78],H2[data-v-377cbd78]{position:relative}H2[data-v-377cbd78]{margin:0 0 20px 0}.filter[data-v-377cbd78]{line-height:45px}.right-action[data-v-377cbd78]{position:absolute;top:10px;right:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".auto-update[data-v-130977a6]{min-width:150px;height:40px}.group-tab .count[data-v-130977a6]{opacity:.7;margin-left:2px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".flex-content[data-v-36fcbdfe]{display:flex;flex-direction:column;flex-grow:1}.footer[data-v-36fcbdfe]{margin-top:20px;right:0;position:sticky;bottom:0;background-color:var(--header-bg);margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:10px 24px}.footer.edit[data-v-36fcbdfe]{border-top:var(--header-border-size) solid var(--header-border)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".resource-yaml .yaml-editor{min-height:200px}.resource-yaml footer .actions{text-align:right}.resource-yaml .spacer-small{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".top[data-v-48821e48]{display:flex;position:relative}.top>h2[data-v-48821e48]{flex:1}.close-button[data-v-48821e48]{cursor:pointer;display:flex;align-items:center;justify-content:center;padding:2px}.close-button>i[data-v-48821e48]{font-size:14px;opacity:.5}.close-button[data-v-48821e48]:hover{background-color:var(--wm-closer-hover-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".simple-box{background:var(--simple-box-bg) 0 0 no-repeat padding-box;box-shadow:0 0 10px var(--simple-box-shadow);border:1px solid var(--simple-box-border);padding:15px}.simple-box .top{line-height:24px;font-size:18px;border-bottom:1px solid var(--simple-box-divider);padding-bottom:15px;margin:0 -15px 10px -15px;padding:0 15px 15px 15px;align-items:center;display:flex .simple-box .top BUTTON;display-padding:0;display-height:fit-content;display-align-self:flex-start}.simple-box .top H2{margin-bottom:0}.simple-box .content{padding:15px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".table-options-group .table-options-btn.role-multi-action[data-v-5a4a5cc3]{background-color:transparent;border:none;font-size:18px}.table-options-group .table-options-btn.role-multi-action[data-v-5a4a5cc3]:focus,.table-options-group .table-options-btn.role-multi-action[data-v-5a4a5cc3]:hover{background-color:var(--accent-btn);box-shadow:none}.table-options-group .table-options-container[data-v-5a4a5cc3]{width:350px;border:1px solid var(--primary);background-color:var(--body-bg);padding:20px;z-index:1}.table-options-group .table-options-container .table-options-grouping[data-v-5a4a5cc3]{display:flex;align-items:center;margin-bottom:20px}.table-options-group .table-options-container .table-options-grouping span[data-v-5a4a5cc3]{white-space:nowrap;margin-right:10px}.table-options-group .table-options-container ul[data-v-5a4a5cc3]{list-style:none;margin:0;padding:0;max-height:200px;overflow-y:auto}.table-options-group .table-options-container ul li[data-v-5a4a5cc3]{margin:0;padding:0}.table-options-group .table-options-container ul li.visible[data-v-5a4a5cc3]{margin:0 0 10px 0}.sortable>SPAN[data-v-5a4a5cc3]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.sortable>SPAN[data-v-5a4a5cc3]:active,.sortable>SPAN[data-v-5a4a5cc3]:hover{text-decoration:underline;color:var(--body-text)}.top-aligned th[data-v-5a4a5cc3]{vertical-align:top;padding-top:10px}thead tr[data-v-5a4a5cc3]{background-color:var(--sortable-table-header-bg);text-align:left;border-bottom:1px solid var(--sortable-table-top-divider)}th[data-v-5a4a5cc3],thead tr[data-v-5a4a5cc3]{color:var(--body-text)}th[data-v-5a4a5cc3]{padding:8px 5px;font-weight:400;border:0}th.sortable-table-head-element[data-v-5a4a5cc3]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:-4px}th .table-header-container[data-v-5a4a5cc3]{display:inline-flex}th .table-header-container .content[data-v-5a4a5cc3]{display:flex;flex-direction:column}th .table-header-container.not-filterable[data-v-5a4a5cc3],th .table-header-container.not-filterable .icon-stack[data-v-5a4a5cc3]{margin-top:-2px}th .table-header-container .not-filter-icon[data-v-5a4a5cc3]{font-size:16px;color:var(--primary);vertical-align:super}th[data-v-5a4a5cc3]:first-child{padding-left:10px}th[data-v-5a4a5cc3]:last-child{padding-right:10px}th:not(.sortable)>SPAN[data-v-5a4a5cc3]{display:block;margin-bottom:2px}th A[data-v-5a4a5cc3]{color:var(--body-text)}@media only screen and (max-width:480px){th.desktop[data-v-5a4a5cc3],th.laptop[data-v-5a4a5cc3],th.tablet[data-v-5a4a5cc3]{display:none}}@media only screen and (max-width:992px){th.desktop[data-v-5a4a5cc3],th.laptop[data-v-5a4a5cc3]{display:none}}@media only screen and (max-width:1281px){th.desktop[data-v-5a4a5cc3]{display:none}}.icon-stack[data-v-5a4a5cc3]{width:12px}.icon-sort.faded[data-v-5a4a5cc3]{opacity:.3}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".table-options-checkbox .checkbox-custom{min-width:14px}.table-options-checkbox .checkbox-label{color:var(--body-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sortable-table.alt-loading[data-v-71341832]{opacity:.5;pointer-events:none}.advanced-filter-group[data-v-71341832]{position:relative;margin-left:10px}.advanced-filter-group .advanced-filter-container[data-v-71341832]{position:absolute;top:38px;right:0;width:300px;border:1px solid var(--primary);background-color:var(--body-bg);padding:20px;z-index:2}.advanced-filter-group .advanced-filter-container .middle-block[data-v-71341832]{display:flex;align-items:center;margin-top:20px}.advanced-filter-group .advanced-filter-container .middle-block span[data-v-71341832]{margin-right:20px}.advanced-filter-group .advanced-filter-container .middle-block button[data-v-71341832]{margin-left:20px}.advanced-filter-group .advanced-filter-container .bottom-block[data-v-71341832]{display:flex;align-items:center;margin-top:40px;justify-content:space-between}.advanced-filters-applied[data-v-71341832]{display:inline-flex;margin:0;padding:0;list-style:none;max-width:100%;flex-wrap:wrap;justify-content:flex-end}.advanced-filters-applied li[data-v-71341832]{margin:0 20px 10px 0;padding:2px 5px;border:1px solid;display:flex;align-items:center;position:relative;height:20px}.advanced-filters-applied li[data-v-71341832]:nth-child(4n+1){border-color:var(--success)}.advanced-filters-applied li:nth-child(4n+1) .bg[data-v-71341832]{background-color:var(--success)}.advanced-filters-applied li[data-v-71341832]:nth-child(4n+2){border-color:var(--warning)}.advanced-filters-applied li:nth-child(4n+2) .bg[data-v-71341832]{background-color:var(--warning)}.advanced-filters-applied li[data-v-71341832]:nth-child(4n+3){border-color:var(--info)}.advanced-filters-applied li:nth-child(4n+3) .bg[data-v-71341832]{background-color:var(--info)}.advanced-filters-applied li[data-v-71341832]:nth-child(4n+4){border-color:var(--error)}.advanced-filters-applied li:nth-child(4n+4) .bg[data-v-71341832]{background-color:var(--error)}.advanced-filters-applied li .bg[data-v-71341832]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.2;z-index:-1}.advanced-filters-applied li .label[data-v-71341832]{margin-right:10px;font-size:11px}.advanced-filters-applied li .cross[data-v-71341832]{font-size:12px;font-weight:700;cursor:pointer}@media only screen and (max-width:480px){td.desktop[data-v-71341832],td.laptop[data-v-71341832],td.tablet[data-v-71341832]{display:none}}@media only screen and (max-width:992px){td.desktop[data-v-71341832],td.laptop[data-v-71341832]{display:none}}@media only screen and (max-width:1281px){td.desktop[data-v-71341832]{display:none}}tr td div.data-loading[data-v-71341832]{align-items:center;display:flex;justify-content:center;padding:20px 0}tr td div.data-loading>i[data-v-71341832]{font-size:20px;height:20px;margin-right:5px;width:20px}.search-box[data-v-71341832]{height:40px;margin-left:10px;min-width:180px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".filter-select .vs__selected-options .vs__selected{text-align:left}.sortable-table{border-collapse:collapse;min-width:400px;border-radius:5px 5px 0 0;outline:1px solid var(--border);background:var(--sortable-table-bg);border-radius:4px}.sortable-table.overflow-x{overflow-x:visible}.sortable-table.overflow-y{overflow-y:visible}.sortable-table td{padding:8px 5px;border:0}.sortable-table td:first-child{padding-left:10px}.sortable-table td:last-child{padding-right:10px}.sortable-table td.row-check{padding-top:12px}.sortable-table tbody tr{border-bottom:1px solid var(--sortable-table-top-divider);background-color:var(--sortable-table-row-bg)}.sortable-table tbody tr.additional-sub-row.has-sub-row,.sortable-table tbody tr.main-row.has-sub-row{border-bottom:0}.sortable-table tbody tr.main-row:not(.row-selected):hover+.additional-sub-row,.sortable-table tbody tr.main-row:not(.row-selected):hover+.additional-sub-row+.sub-row,.sortable-table tbody tr.main-row:not(.row-selected):hover+.sub-row{background-color:var(--sortable-table-hover-bg)}.sortable-table tbody tr:last-of-type{border-bottom:0}.sortable-table tbody tr.sub-row-hovered,.sortable-table tbody tr:hover{background-color:var(--sortable-table-hover-bg)}.sortable-table tbody tr.state-description>td{font-size:13px;padding-top:0;overflow-wrap:anywhere}.sortable-table tbody tr.active-row{color:var(--sortable-table-header-bg)}.sortable-table tbody tr.row-selected{background:var(--sortable-table-selected-bg)}.sortable-table tbody .no-rows td{padding:30px 0;text-align:center}.sortable-table tbody .no-results:hover,.sortable-table tbody .no-rows:hover{background-color:var(--body-bg)}.sortable-table tbody.group:before{content:\\\"\\\";display:block;height:20px;background-color:transparent}.sortable-table tbody tr.group-row{background-color:initial}.sortable-table tbody tr.group-row:first-child{border-bottom:2px solid var(--sortable-table-row-bg)}.sortable-table tbody tr.group-row:not(:first-child){margin-top:20px}.sortable-table tbody tr.group-row td{padding:0}.sortable-table tbody tr.group-row td:first-of-type{border-left:1px solid var(--sortable-table-accent-bg)}.sortable-table tbody tr.group-row .group-tab:after,.sortable-table tbody tr.group-row .group-tab:before{content:\\\" \\\";display:table}.sortable-table tbody tr.group-row .group-tab:after{clear:both}.sortable-table tbody tr.group-row .group-tab{height:40px;line-height:40px;padding:0 10px;border-radius:4px 4px 0 0;background-color:var(--sortable-table-row-bg);position:relative;top:1px;display:inline-block;z-index:10;min-width:72px}.sortable-table tbody tr.group-row .group-tab>SPAN{color:var(--sortable-table-group-label)}.sortable-table tbody tr.group-row .group-tab:after{height:40px;width:70px;border-radius:5px 5px 0 0;background-color:var(--sortable-table-row-bg);content:\\\"\\\";position:absolute;right:-15px;top:0;transform:skewX(40deg);z-index:-1}.for-inputs TABLE.sortable-table{width:100%;border-collapse:collapse;margin-bottom:10px}.for-inputs TABLE.sortable-table>TBODY>TR>TD,.for-inputs TABLE.sortable-table>THEAD>TR>TH{padding-right:10px;padding-bottom:10px}.for-inputs TABLE.sortable-table>TBODY>TR>TD:last-of-type,.for-inputs TABLE.sortable-table>THEAD>TR>TH:last-of-type{padding-right:0}.for-inputs TABLE.sortable-table>TBODY>TR:first-of-type>TD{padding-top:10px}.for-inputs TABLE.sortable-table>TBODY>TR:last-of-type>TD{padding-bottom:0}.for-inputs.clone TABLE.sortable-table>THEAD>TR>TH,.for-inputs.create TABLE.sortable-table>THEAD>TR>TH,.for-inputs.edit TABLE.sortable-table>THEAD>TR>TH{border-color:transparent}.sortable-table-header{position:relative;z-index:11}.sortable-table-header.titled{display:flex;align-items:center}.fixed-header-actions.button{grid-template-columns:[bulk] auto [middle] min-content [search] minmax(min-content,350px)}.sub-header-row{padding:0 0 10px 0}.fixed-header-actions{padding:0 0 20px 0}.fixed-header-actions.with-sub-header{padding:0 0 5px 0}.fixed-header-actions{width:100%;z-index:11;background:transparent;display:grid;grid-template-columns:[bulk] auto [middle] min-content [search] minmax(min-content,200px);grid-column-gap:10px}.fixed-header-actions.advanced-filtering{grid-template-columns:[bulk] auto [middle] minmax(min-content,auto) [search] minmax(min-content,auto)}.fixed-header-actions .bulk{grid-area:bulk}.fixed-header-actions .bulk>BUTTON{display:none}.fixed-header-actions .bulk>BUTTON:not(:last-of-type){margin-right:10px}.fixed-header-actions .bulk .action-availability{display:none;margin-left:10px;vertical-align:middle;margin-top:2px}.fixed-header-actions .bulk .dropdown-button li.disabled{color:var(--disabled-text);cursor:not-allowed}.fixed-header-actions .bulk .dropdown-button li.disabled:hover{color:var(--disabled-text);background-color:unset;cursor:not-allowed}.fixed-header-actions .middle{grid-area:middle;white-space:nowrap}.fixed-header-actions .middle .icon.icon-backup.animate{animation-name:spin;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fixed-header-actions .search{grid-area:search;text-align:right;justify-content:flex-end}.fixed-header-actions .bulk-actions-dropdown{display:none}.fixed-header-actions .bulk-actions-dropdown .dropdown-button{background-color:var(--primary)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button:hover{background-color:var(--primary-hover-bg);color:var(--primary-hover-text)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button .icon-chevron-down,.fixed-header-actions .bulk-actions-dropdown .dropdown-button>*{color:var(--primary-text)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button .button-divider{border-color:var(--primary-text)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button.disabled{border-color:var(--disabled-bg)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button.disabled .icon-chevron-down{color:var(--disabled-text)!important}.fixed-header-actions .bulk-actions-dropdown .dropdown-button.disabled .button-divider{border-color:var(--disabled-text)}.paging{margin-top:10px;text-align:center}.paging SPAN{display:inline-block;min-width:200px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".state-dot[data-v-2001ed60]{display:inline-block;width:var(--v34a0a70d);height:var(--v34a0a70d);border-radius:50%;background-color:var(--v7e32a647)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tab-header[data-v-c5795340]{display:flex;justify-content:space-between;margin-bottom:15px;align-items:center}.tab-header h2[data-v-c5795340]{margin:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tabbed-container[data-v-6139718a]{min-width:-moz-fit-content;min-width:fit-content}.tabs[data-v-6139718a]{list-style-type:none;margin:0;padding:0}.tabs[data-v-6139718a]:focus-visible{outline:none}.tabs:focus-visible .tab.active[data-v-6139718a]{outline:2px solid var(--primary-keyboard-focus);outline-offset:-2px}.tabs.horizontal[data-v-6139718a]{border:solid thin var(--border);border-bottom:0;display:flex;flex-direction:row}.tabs.horizontal.remove-borders[data-v-6139718a]{border:none}.tabs.horizontal.remove-borders+.tab-container[data-v-6139718a]{border:none;border-top:1px solid var(--border);padding:0;padding-top:24px}.tabs.horizontal+.tab-container[data-v-6139718a]{border:solid thin var(--border)}.tabs.horizontal .tab.active[data-v-6139718a]{border-bottom:solid 2px var(--active,var(--primary))}.tabs:focus .tab.active a span[data-v-6139718a]{text-decoration:underline}.tabs .tab[data-v-6139718a]{position:relative;float:left;padding:0 4px 0 4px;cursor:pointer}.tabs .tab A[data-v-6139718a]{display:flex;align-items:center;padding:10px 15px}.tabs .tab A[data-v-6139718a]:hover{text-decoration:none}.tabs .tab A:hover span[data-v-6139718a]{text-decoration:underline}.tabs .tab .conditions-alert-icon[data-v-6139718a]{color:var(--error);padding-left:4px;margin-left:auto}.tabs .tab[data-v-6139718a]:last-child{padding-right:0}.tabs .tab.active>A[data-v-6139718a]{color:var(--active,var(--primary));text-decoration:none}.tabs .tab.error A>.icon-error[data-v-6139718a]{color:var(--error)}.tabs .tab .tab-label-icon[data-v-6139718a]{margin-right:8px}.tabs .tab .tab-badge[data-v-6139718a]{margin-left:5px;background-color:var(--link);color:#fff;border-radius:6px;padding:1px 7px;font-size:11px}.tab-container[data-v-6139718a]{padding:20px}.tab-container.no-content[data-v-6139718a]{padding:0 0 3px 0}.tab-container--flat[data-v-6139718a]{padding:0}.tab-container--flat .side-tabs[data-v-6139718a]{box-shadow:unset}.tabs-only[data-v-6139718a]{margin-bottom:20px}.tabs-only .tab-container[data-v-6139718a]{display:none}.tabs-only .tabs[data-v-6139718a]{border:0;border-bottom:2px solid var(--border)}.side-tabs[data-v-6139718a]{display:flex;box-shadow:0 0 20px var(--shadow);border-radius:calc(var(--border-radius)*2);background-color:var(--tabbed-sidebar-bg)}.side-tabs .tab-container[data-v-6139718a]{padding:20px}.side-tabs .tabs[data-v-6139718a]{width:200px;min-width:200px;display:flex;flex:1 0;flex-direction:column}.side-tabs .tabs .tab[data-v-6139718a]{width:100%;border-left:5px solid transparent}.side-tabs .tabs .tab.toggle A[data-v-6139718a]{color:var(--active,var(--primary))}.side-tabs .tabs .tab A[data-v-6139718a]{color:var(--link,var(--primary))}.side-tabs .tabs .tab.active[data-v-6139718a]{background-color:var(--body-bg);border-left:solid 5px var(--active,var(--primary))}.side-tabs .tabs .tab.active A[data-v-6139718a]{color:var(--input-label)}.side-tabs .tabs .tab.disabled[data-v-6139718a]{background-color:var(--disabled-bg)}.side-tabs .tabs .tab.disabled A[data-v-6139718a]{color:var(--disabled-text);text-decoration:none}.side-tabs .tabs .tab-list-footer[data-v-6139718a]{list-style:none;padding:0;margin-top:auto;z-index:1}.side-tabs .tabs .tab-list-footer li[data-v-6139718a]{display:flex;flex:1}.side-tabs .tabs .tab-list-footer li .btn[data-v-6139718a]{flex:1 1;display:flex;justify-content:center}.side-tabs .tabs .tab-list-footer li .btn[data-v-6139718a]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.side-tabs .tabs .tab-list-footer li button[data-v-6139718a]:first-of-type{border-top:solid 1px var(--border);border-right:solid 1px var(--border);border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.side-tabs .tabs .tab-list-footer li button[data-v-6139718a]:last-of-type{border-top:solid 1px var(--border);border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.side-tabs .tab-container[data-v-6139718a]{width:calc(100% - 200px);flex-grow:1;background-color:var(--body-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tag[data-v-0d281a35]{border-radius:var(--border-radius);color:var(--tag-primary);background-color:var(--tag-bg);padding:4px 6px 3px 6px;font-size:12px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".outer-container[data-v-085239e6]{display:flex;flex-direction:column;flex:1;padding:0;justify-content:space-between}.header[data-v-085239e6]{display:flex;align-content:space-between;align-items:center;margin-bottom:20px;border-bottom:var(--header-border-size) solid var(--header-border)}.header .step-sequence[data-v-085239e6],.header>.title[data-v-085239e6]{flex:1;min-height:60px;display:flex}.header .step-sequence .steps[data-v-085239e6]{flex:1;margin:0 30px;display:flex;justify-content:space-between;list-style-type:none;padding:0}.header .step-sequence .steps[data-v-085239e6]:focus{outline:none;box-shadow:none}.header .step-sequence .steps li.step[data-v-085239e6]{display:flex;flex-direction:row;flex-grow:1;align-items:center}.header .step-sequence .steps li.step>span>span[data-v-085239e6]:last-of-type{padding-bottom:0}.header .step-sequence .steps li.step[data-v-085239e6]:last-of-type{flex-grow:0}.header .step-sequence .steps li.step .controls[data-v-085239e6]{display:flex;flex-direction:column;align-items:center;width:40px;overflow:visible;padding-top:7px}.header .step-sequence .steps li.step .controls>span[data-v-085239e6]{padding-bottom:3px;margin-bottom:5px;white-space:nowrap}.header .step-sequence .steps li.step.active .controls[data-v-085239e6]{color:var(--primary)}.header .step-sequence .steps li.step:not(.disabled) .controls[data-v-085239e6]:hover>*{color:var(--primary)!important;cursor:pointer}.header .step-sequence .steps li.step:not(.active) .controls[data-v-085239e6]>*{color:var(--input-disabled-text);text-decoration:none}.header .step-sequence .steps .divider[data-v-085239e6]{flex-basis:100%;border-top:1px solid var(--border);position:relative;top:17px}.cru__content .header .step-sequence .steps .divider[data-v-085239e6]{top:13px}.header .choice-banner[data-v-085239e6]{flex-basis:40%;display:flex;align-items:center;margin-bottom:10px}.header .choice-banner.selected[data-v-085239e6]{background-color:var(--accent-btn)}.header .choice-banner.top H2[data-v-085239e6]{margin:0}.header .choice-banner.top .title[data-v-085239e6]{display:flex;align-items:center;justify-content:space-evenly;position:relative}.header .choice-banner.top .title>.subtitle[data-v-085239e6]{margin-right:20px}.header .choice-banner.top .subtitle[data-v-085239e6]{display:flex;flex-direction:column}.header .choice-banner.top .subtitle .subtext[data-v-085239e6]{color:var(--input-label)}.header .choice-banner[data-v-085239e6]:not(.top){box-shadow:0 0 12px 3px var(--box-bg);flex-direction:row;align-items:center;justify-content:start}.header .choice-banner[data-v-085239e6]:not(.top):hover{outline:var(--outline-width) solid var(--outline);cursor:pointer}.header .choice-banner .round-image[data-v-085239e6]{min-width:50px;height:50px;margin:10px 10px 10px 0;border-radius:50%;overflow:hidden}.header .choice-banner .round-image .logo[data-v-085239e6]{min-width:50px;height:50px}.step-container[data-v-085239e6]{position:relative;flex:1 1 auto;height:0;overflow-y:auto;padding:20px 2px 2px 2px;display:flex;flex-direction:column}.step-container__step[data-v-085239e6]{overflow:hidden;display:flex;flex-direction:column;flex:1}.footer-error[data-v-085239e6]{margin-top:-40px;margin-bottom:70px}.controls-row[data-v-085239e6]{margin-left:-24px;margin-right:-24px;padding:10px 24px;display:flex;justify-content:space-between;padding-top:10px;border-top:var(--header-border-size) solid var(--header-border);position:absolute;bottom:0;width:100%;background:var(--body-bg)}.controls-row .controls-steps .btn[data-v-085239e6]{margin-left:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".yaml-editor{display:flex;flex-direction:column}.yaml-editor .fill{flex:1}.yaml-editor .codemirror-container{position:relative}.yaml-editor .codemirror-container .CodeMirror,.yaml-editor .codemirror-container .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper{border-top-right-radius:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box[data-v-5002fd75],.title[data-v-5002fd75]{margin-bottom:10px}.box[data-v-5002fd75]{display:grid;grid-template-columns:auto 75px;align-items:center}.box .value[data-v-5002fd75]{flex:1}.box .value INPUT[data-v-5002fd75]{height:40px}.box.hide-remove-is-view[data-v-5002fd75]{grid-template-columns:auto}.remove[data-v-5002fd75]{text-align:right}.footer .protip[data-v-5002fd75]{float:right;padding:5px 0}.required[data-v-5002fd75]{color:var(--error)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".array-list-grouped>.box{position:relative;display:block}.array-list-grouped>.box>.remove{position:absolute;top:0;right:0}.array-list-grouped>.box>.info-box{margin-bottom:0;padding-right:25px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".color-input[data-v-66bade12]{border:1px solid var(--border);border-radius:var(--border-radius);padding:10px}.color-input[data-v-66bade12]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}.color-input.disabled[data-v-66bade12],.color-input.disabled .selected[data-v-66bade12],.color-input[disabled][data-v-66bade12],.color-input[disabled][data-v-66bade12]:hover{color:var(--input-disabled-text);background-color:var(--input-disabled-bg);outline-width:0;border-color:var(--input-disabled-border);cursor:not-allowed}.color-input.disabled .selected div[data-v-66bade12],.color-input.disabled .selected input[data-v-66bade12],.color-input.disabled .selected label[data-v-66bade12],.color-input.disabled .selected span[data-v-66bade12],.color-input.disabled div[data-v-66bade12],.color-input.disabled input[data-v-66bade12],.color-input.disabled label[data-v-66bade12],.color-input.disabled span[data-v-66bade12],.color-input[disabled] div[data-v-66bade12],.color-input[disabled] input[data-v-66bade12],.color-input[disabled] label[data-v-66bade12],.color-input[disabled] span[data-v-66bade12],.color-input[disabled]:hover div[data-v-66bade12],.color-input[disabled]:hover input[data-v-66bade12],.color-input[disabled]:hover label[data-v-66bade12],.color-input[disabled]:hover span[data-v-66bade12]{cursor:not-allowed!important}.color-input.disabled .selected label[data-v-66bade12],.color-input.disabled label[data-v-66bade12],.color-input[disabled] label[data-v-66bade12],.color-input[disabled]:hover label[data-v-66bade12]{color:var(--input-disabled-label);display:inline-block;z-index:1}.color-input.disabled .selected[data-v-66bade12]::-moz-placeholder,.color-input.disabled[data-v-66bade12]::-moz-placeholder,.color-input[disabled][data-v-66bade12]::-moz-placeholder,.color-input[disabled][data-v-66bade12]:hover::-moz-placeholder{color:var(--input-disabled-placeholder)}.color-input.disabled .selected[data-v-66bade12]::placeholder,.color-input.disabled[data-v-66bade12]::placeholder,.color-input[disabled][data-v-66bade12]::placeholder,.color-input[disabled][data-v-66bade12]:hover::placeholder{color:var(--input-disabled-placeholder)}.color-input LABEL[data-v-66bade12]{display:block}.color-input .preview-container[data-v-66bade12]:hover{cursor:pointer}.color-input .preview-container .color-value[data-v-66bade12]{margin-left:4px}.color-input .color-display[data-v-66bade12]{border:1px solid var(--border)}.color-input .color-display[data-v-66bade12]:focus{outline:none;box-shadow:0 0 0 var(--outline-width) var(--outline);background:var(--input-focus-bg)}.color-input INPUT[data-v-66bade12]{border:none;padding:0;width:23px;height:23px;-webkit-appearance:none;opacity:0}.color-input INPUT[data-v-66bade12]:hover{cursor:pointer}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".buttons{display:grid;grid-template-areas:\\\"left right\\\";grid-template-columns:\\\"min-content auto\\\"}.buttons .left{grid-area:left;text-align:left}.buttons .left .btn,.buttons .left button{margin:0 1.75% 0 0}.buttons .right{grid-area:right;text-align:right}.buttons .right .btn,.buttons .right button{margin:0 0 0 1.75%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".input-container[data-v-6f50f528]{display:flex}.input-container.select-after[data-v-6f50f528]{height:100%;flex-direction:row-reverse}.input-container.select-after .input-string[data-v-6f50f528]{border-radius:var(--border-radius) 0 0 var(--border-radius);border-right:0;border-left-width:1px}.input-container.select-after .in-input[data-v-6f50f528]{border-radius:0 var(--border-radius) var(--border-radius) 0}.input-container.select-after .in-input.labeled-select .selected[data-v-6f50f528]{color:var(--input-text);text-align:center;margin-right:1em}.input-container.select-after .in-input.focused[data-v-6f50f528]:not(.vs__dropdown-up){border-bottom-right-radius:0}.input-container.select-after .in-input.focused.vs__dropdown-up[data-v-6f50f528]{border-top-right-radius:0}.input-container.select-after .input-string.focused[data-v-6f50f528],.input-container.select-after .input-string[data-v-6f50f528]:focus,.input-container.select-after .input-string[data-v-6f50f528]:hover:not(.focused):not(.disabled):not(:focus){padding-left:10px!important}.input-container .input-string[data-v-6f50f528]{padding-right:0;width:60%;flex-grow:1;border-radius:0 var(--border-radius) var(--border-radius) 0;border-left-width:0;margin-left:-1px;position:relative;display:table;border-collapse:separate}.input-container .input-string[data-v-6f50f528]:hover:not(.focused):not(.disabled):not(:focus):not(.view){border-left:1px solid var(--input-hover-border);border-right:1px solid var(--input-hover-border);padding-left:9px}.input-container .input-string.focused[data-v-6f50f528],.input-container .input-string[data-v-6f50f528]:focus{border-left:1px solid var(--outline)!important;border-right:1px solid var(--outline)!important;padding-left:9px}.input-container .in-input[data-v-6f50f528]{margin-right:0}.input-container .in-input[data-v-6f50f528]:hover:not(.focused):not(.disabled),.input-container .in-input[data-v-6f50f528]:hover:not(.focused):not(.disabled):not(.view){border:1px solid var(--input-hover-border)!important}.input-container .in-input.focused[data-v-6f50f528]{border:1px solid var(--outline)!important}.input-container .in-input.labeled-select.focused[data-v-6f50f528] ,.input-container .in-input.unlabeled-select.focused[data-v-6f50f528] {outline:none}.input-container .in-input.labeled-select[data-v-6f50f528]:not(.disabled):not(.view) ,.input-container .in-input.unlabeled-select[data-v-6f50f528]:not(.disabled):not(.view) {border:solid 1px var(--input-border)}.input-container .in-input.labeled-select[data-v-6f50f528] ,.input-container .in-input.unlabeled-select[data-v-6f50f528] {box-shadow:none;width:20%;margin-right:1px}.input-container .in-input.labeled-select[data-v-6f50f528] .vs__selected,.input-container .in-input.unlabeled-select[data-v-6f50f528] .vs__selected{color:var(--input-text)}.input-container .in-input.labeled-select[data-v-6f50f528] .vs__dropdown-menu,.input-container .in-input.unlabeled-select[data-v-6f50f528] .vs__dropdown-menu{box-shadow:none}.input-container .in-input.labeled-select[data-v-6f50f528] .vs__dropdown-menu .vs__dropdown-option,.input-container .in-input.unlabeled-select[data-v-6f50f528] .vs__dropdown-menu .vs__dropdown-option{padding:3px 5px}.input-container .in-input.labeled-select[data-v-6f50f528] .v-select:not(.vs--disabled) .vs__dropdown-toggle,.input-container .in-input.unlabeled-select[data-v-6f50f528] .v-select:not(.vs--disabled) .vs__dropdown-toggle{border-radius:var(--border-radius) 0 0 var(--border-radius)}.input-container .in-input.labeled-select[data-v-6f50f528] .v-select:not(.vs--disabled).vs--open .vs__dropdown-toggle,.input-container .in-input.unlabeled-select[data-v-6f50f528] .v-select:not(.vs--disabled).vs--open .vs__dropdown-toggle{color:var(--outline)!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-select[data-v-cf799680]{position:relative;padding-bottom:1px}.labeled-select.no-label.compact-input[data-v-cf799680] .vs__actions:after{top:-2px}.labeled-select.no-label.compact-input .labeled-container[data-v-cf799680]{padding:5px 0 1px 10px}.labeled-select.no-label[data-v-cf799680]:not(.compact-input){height:61px;padding-top:4px}.labeled-select.no-label[data-v-cf799680]:not(.compact-input) .vs__actions:after{top:0}.labeled-select .icon-spinner[data-v-cf799680]{position:absolute;left:calc(50% - .5em);top:calc(50% - .5em)}.labeled-select .labeled-container[data-v-cf799680]{padding:7px 0 0 10px;padding:10px 0 0 10px}.labeled-select .labeled-container label[data-v-cf799680]{margin:0}.labeled-select .labeled-container .selected[data-v-cf799680]{background-color:transparent}.labeled-select.view.labeled-input .labeled-container[data-v-cf799680]{padding:0}.labeled-select.taggable.compact-input[data-v-cf799680]{min-height:40px}.labeled-select.taggable.compact-input[data-v-cf799680] .vs__selected-options{padding-top:8px!important}.labeled-select.taggable[data-v-cf799680]:not(.compact-input){min-height:61px}.labeled-select.taggable[data-v-cf799680]:not(.compact-input) .vs__selected-options{margin-top:0}.labeled-select[data-v-cf799680]:not(.taggable) .vs__selected-options .vs__selected{width:100%}.labeled-select.taggable[data-v-cf799680] .vs__selected-options{padding:3px 0}.labeled-select.taggable[data-v-cf799680] .vs__selected-options .vs__selected{border-color:var(--accent-btn);height:20px;min-height:unset!important;padding:0 0 0 7px!important}.labeled-select.taggable[data-v-cf799680] .vs__selected-options .vs__selected>button{height:20px;line-height:14px}.labeled-select.taggable[data-v-cf799680] .vs__selected-options .vs__selected>button:hover{background-color:var(--primary);border-radius:0}.labeled-select.taggable[data-v-cf799680] .vs__selected-options .vs__selected>button:hover:after{color:#fff}.labeled-select[data-v-cf799680] .vs__selected-options{margin-top:-5px}.labeled-select[data-v-cf799680] .v-select:not(.vs--single) .vs__selected-options{padding:5px 0}.labeled-select[data-v-cf799680] .vs__actions:after{position:relative;top:-10px}.labeled-select[data-v-cf799680] .v-select.vs--open .vs__dropdown-toggle{color:var(--outline)!important}[data-v-cf799680] .labeled-select.disabled .labeled-container,[data-v-cf799680] .labeled-select.disabled .vs__dropdown-toggle,[data-v-cf799680] .labeled-select.disabled input,[data-v-cf799680] .labeled-select.disabled label{cursor:not-allowed}.labeled-select .no-label[data-v-cf799680] .v-select:not(.vs--single){min-height:33px}.labeled-select .no-label[data-v-cf799680] .selected{padding-top:8px;padding-bottom:9px;position:relative;max-height:2.3em;overflow:hidden}.labeled-select .no-label[data-v-cf799680] .vs__selected-options{padding:8px 0 7px 0}.vs__dropdown-menu .vs__dropdown-option .vs__option-kind-group[data-v-cf799680]{display:flex;align-items:center}.vs__dropdown-menu .vs__dropdown-option .vs__option-kind-group i[data-v-cf799680]{width:18px}.vs__dropdown-menu .vs__dropdown-option .vs__option-kind-group>b[data-v-cf799680]{flex:1}.vs__dropdown-menu .vs__dropdown-option .vs__option-kind-group>div[data-v-cf799680]{background-color:var(--primary);border-radius:4px;color:var(--primary-text);font-size:12px;height:18px;line-height:18px;margin-top:1px;padding:0 10px}.vs__dropdown-menu .vs__dropdown-option .vs__option-kind.has-icon[data-v-cf799680],.vs__dropdown-menu.has-icon .vs__option-kind div[data-v-cf799680]{padding-left:18px}.vs__dropdown-menu .pagination-slot[data-v-cf799680]{display:flex;align-items:center;justify-content:center;position:relative;margin-top:5px}.vs__dropdown-menu .pagination-slot .load-more[data-v-cf799680]{display:flex;align-items:center;height:19px}.vs__dropdown-menu .pagination-slot .load-more a[data-v-cf799680]{cursor:pointer}.vs__dropdown-menu .pagination-slot .count[data-v-cf799680]{position:absolute;right:10px}.vs__dropdown-menu .no-options-slot .paginating[data-v-cf799680]{display:flex;align-items:center;justify-content:center}.vs__dropdown-option>.option-kind-highlighted[data-v-cf799680]{color:var(--dropdown-highlight-text)}.vs__dropdown-option.vs__dropdown-option--highlight>.option-kind-highlighted[data-v-cf799680],.vs__dropdown-option.vs__dropdown-option--selected>.option-kind-highlighted[data-v-cf799680],.vs__dropdown-option>.option-kind-highlighted[data-v-cf799680]:hover{color:var(--dropdown-hover-text)}.vs__dropdown-menu .vs__dropdown-option .only-user-opts[data-v-cf799680]{color:var(--dropdown-text);background-color:var(--dropdown-bg);margin:0 -5px;padding:3px 20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unlabeled-select[data-v-7aa56fc4]{position:relative}.unlabeled-select[data-v-7aa56fc4] .v-select.select-input-view .vs__actions{visibility:hidden}.unlabeled-select .vs--multiple[data-v-7aa56fc4] .vs__selected-options .vs__selected{width:auto}.unlabeled-select[data-v-7aa56fc4] .labeled-tooltip.error .status-icon{top:7px;right:2px}.unlabeled-select[data-v-7aa56fc4] .vs__selected-options{display:flex;margin:3px}.unlabeled-select[data-v-7aa56fc4] .vs__selected-options .vs__selected{width:auto}.unlabeled-select[data-v-7aa56fc4] .v-select.vs--open .vs__dropdown-toggle{color:var(--outline)!important}.unlabeled-select.focused.success[data-v-7aa56fc4],.unlabeled-select.success[data-v-7aa56fc4]{border:solid 1px var(--success)}.unlabeled-select.focused.success .selected[data-v-7aa56fc4],.unlabeled-select.focused.success .vs__actions[data-v-7aa56fc4]:after,.unlabeled-select.focused.success input[data-v-7aa56fc4],.unlabeled-select.success .selected[data-v-7aa56fc4],.unlabeled-select.success .vs__actions[data-v-7aa56fc4]:after,.unlabeled-select.success input[data-v-7aa56fc4]{color:var(--success)}.unlabeled-select.focused.warning[data-v-7aa56fc4],.unlabeled-select.warning[data-v-7aa56fc4]{border:solid 1px var(--warning)}.unlabeled-select.focused.warning .selected[data-v-7aa56fc4],.unlabeled-select.focused.warning .vs__actions[data-v-7aa56fc4]:after,.unlabeled-select.focused.warning input[data-v-7aa56fc4],.unlabeled-select.warning .selected[data-v-7aa56fc4],.unlabeled-select.warning .vs__actions[data-v-7aa56fc4]:after,.unlabeled-select.warning input[data-v-7aa56fc4]{color:var(--warning)}.unlabeled-select.error[data-v-7aa56fc4],.unlabeled-select.focused.error[data-v-7aa56fc4]{border:solid 1px var(--error)}.unlabeled-select.error .vs__actions[data-v-7aa56fc4]:after,.unlabeled-select.error>label[data-v-7aa56fc4],.unlabeled-select.focused.error .vs__actions[data-v-7aa56fc4]:after,.unlabeled-select.focused.error>label[data-v-7aa56fc4]{color:var(--error)}.unlabeled-select.compact-input[data-v-7aa56fc4]{min-height:40px;line-height:18px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".secret-selector{width:100%}.secret-selector label{display:block}.secret-selector .labeled-select{min-height:61px}.secret-selector .vs__selected-options{padding:8px 0 7px 0}.secret-selector label{display:inline-block}.secret-selector.show-key-selector .input-container>*{display:inline-block;width:50%}.secret-selector.show-key-selector .input-container>.labeled-select.focused{z-index:10}.secret-selector.show-key-selector .input-container>:first-child{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}.secret-selector.show-key-selector .input-container>:last-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none;float:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".addon.with-tooltip[data-v-e5242b74]{padding-right:42px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".parent[data-v-5ad5aa7a]{display:grid;grid-template-areas:\\\"progress text\\\";grid-template-columns:auto 80px;align-items:center}.parent .progress[data-v-5ad5aa7a]{background-color:#b8c3dc;width:100%}.parent .progress-box[data-v-5ad5aa7a]{grid-area:progress}.parent .text[data-v-5ad5aa7a]{grid-area:text;text-align:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bar[data-v-b4f4e2ae]{width:100%;height:15px;border-radius:7.5px;overflow:hidden;position:relative}.bar .indicator[data-v-b4f4e2ae]{height:100%}.bar .slice[data-v-b4f4e2ae]{position:absolute;top:0;bottom:0;width:1px;background-color:var(--body-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"svg.text[data-v-5f78e642]{fill:red}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".favorite[data-v-bc643bc4]{position:relative;cursor:pointer;font-size:20px;transform:ease-in-out-all 1s}.favorite.icon-star-open[data-v-bc643bc4]{color:var(--muted)}.favorite.icon-star-closed[data-v-bc643bc4]{color:var(--body-text)}.favorite[data-v-bc643bc4]:focus-visible{outline:2px solid var(--primary-keyboard-focus)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".receiver .box-container.create-resource-container{display:flex;justify-content:space-between;flex-wrap:wrap;margin:0 -10px}.receiver .box-container.create-resource-container .subtype-banner{justify-content:space-between;align-items:center;flex-direction:row}.receiver .right{padding:30px;border-left:1px solid var(--border)}.receiver .logo{text-align:center;width:60px;height:60px;border-radius:calc(var(--border-radius)*2);overflow:hidden;background-color:#fff;display:inline-block;vertical-align:middle}.receiver .logo img{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}.receiver .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:0;display:inline-block;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".responders-heading[data-v-174af1a6]{display:grid;grid-template-columns:auto 75px}.responder[data-v-174af1a6],.responder .target-container[data-v-174af1a6]{width:100%}.responder .target-container[data-v-174af1a6] .unlabeled-select{min-width:35%;height:100%}.responder .target[data-v-174af1a6]{height:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".description[data-v-07ec0ff4]{font-weight:600}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text.info[data-v-7155ccc2]{display:flex;align-items:center}.text.info>span[data-v-7155ccc2]{margin-right:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".delete-warning[data-v-017c9f08]{color:var(--error)}.remove-project-dialog[data-v-017c9f08]{border:1px solid var(--border);padding:10px;border-radius:5px}.remove-project-dialog .display-name[data-v-017c9f08]{font-weight:700}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text.info[data-v-224f553f]{display:flex;align-items:center}.text.info>span[data-v-224f553f]{margin-right:5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body[data-v-44bed663]{font-weight:600}.actions[data-v-44bed663]{text-align:right}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".badge-state[data-v-544b3117]{align-items:center;display:inline-flex;padding:2px 10px;border:1px solid transparent;border-radius:20px}.badge-state.bg-info[data-v-544b3117]{color:var(--on-info-banner);background:var(--info-badge,var(--info-banner))}.badge-state.bg-error[data-v-544b3117]{color:var(--on-error-banner);background:var(--error-badge,var(--error-banner))}.badge-state.bg-warning[data-v-544b3117]{color:var(--on-warning-banner);background:var(--warning-badge,var(--warning-banner))}.badge-state.bg-success[data-v-544b3117]{color:var(--on-success-banner,var(--success-text));background:var(--success-badge,var(--success))}.badge-state.badge-disabled[data-v-544b3117]{color:var(--badge-state-disabled-text);background-color:var(--badge-state-disabled-bg);border:1px solid var(--badge-state-disabled-border)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sortable-table TD .badge-state{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-wrap:break-word;display:inline-block;max-width:100%;position:relative;max-width:110px;font-size:.85em;vertical-align:middle}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".banner[data-v-79a84b17]{display:flex;margin:15px 0;position:relative;width:100%;color:var(--body-text)}.banner__icon[data-v-79a84b17]{width:48px;flex-grow:1;display:flex;justify-content:center;align-items:center;box-sizing:content-box}.primary .banner__icon[data-v-79a84b17]{background:var(--primary)}.secondary .banner__icon[data-v-79a84b17]{background:var(--default)}.success .banner__icon[data-v-79a84b17]{background:var(--success)}.info .banner__icon[data-v-79a84b17]{background:var(--info)}.warning .banner__icon[data-v-79a84b17]{background:var(--warning)}.error .banner__icon[data-v-79a84b17]{background:var(--error);color:var(--primary-text)}.banner.banner-disabled[data-v-79a84b17]{filter:grayscale(1)}.banner__content[data-v-79a84b17]{padding:10px;transition:all .2s ease;line-height:20px;width:100%;border-left:4px solid transparent;display:flex;gap:3px}.primary .banner__content[data-v-79a84b17]{background:var(--primary);border-color:var(--primary)}.secondary .banner__content[data-v-79a84b17]{background:var(--default-banner-bg);border-color:var(--default)}.success .banner__content[data-v-79a84b17]{background:var(--success-banner-bg);border-color:var(--success)}.info .banner__content[data-v-79a84b17]{background:var(--info-banner-bg);border-color:var(--info)}.warning .banner__content[data-v-79a84b17]{background:var(--warning-banner-bg);border-color:var(--warning);color:var(--warning-banner-text,var(--body-text))}.error .banner__content[data-v-79a84b17]{background:var(--error-banner-bg);border-color:var(--error);color:var(--error-banner-text,var(--error))}.banner__content.stacked[data-v-79a84b17]{padding:0 10px;margin:0;transition:none}.banner__content.stacked[data-v-79a84b17]:first-child{padding-top:10px}.banner__content.stacked[data-v-79a84b17]:last-child{padding-bottom:10px}.banner__content.closable[data-v-79a84b17]{padding-right:48px}.banner__content__closer[data-v-79a84b17]{display:flex;align-items:center;cursor:pointer;position:absolute;top:0;right:0;bottom:0;width:24px;line-height:24px;text-align:center;outline:none}.banner__content__closer .closer-icon[data-v-79a84b17]{opacity:.7}.banner__content__closer .closer-icon[data-v-79a84b17]:hover{opacity:1;color:var(--link)}.banner__content__closer:focus-visible i[data-v-79a84b17]{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px}.banner__content.icon[data-v-79a84b17]{border-left:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".card-container.highlight-border[data-v-52307124]{border-left:5px solid var(--primary)}.card-container[data-v-52307124]{border-radius:var(--border-radius);display:flex;flex-basis:40%;margin:10px;min-height:100px;padding:10px;box-shadow:0 0 20px var(--shadow)}.card-container[data-v-52307124]:not(.top){align-items:top;flex-direction:row;justify-content:start}.card-container .card-wrap[data-v-52307124]{width:100%}.card-container .card-body[data-v-52307124]{color:var(--input-label);display:flex;flex-direction:column;justify-content:center}.card-container .card-actions[data-v-52307124]{align-self:end;display:flex;padding-top:20px}.card-container .card-title[data-v-52307124]{align-items:center;display:flex;width:100%}.card-container .card-title h5[data-v-52307124]{margin:0}.card-container .card-title .flex-right[data-v-52307124]{margin-left:auto}.card-container.card-sticky[data-v-52307124]{overflow:hidden}.card-container.card-sticky .card-wrap[data-v-52307124]{display:flex;flex-direction:column}.card-container.card-sticky .card-wrap .card-body[data-v-52307124]{justify-content:flex-start;overflow:auto}.card-container.card-sticky .card-wrap[data-v-52307124]>*{flex:0}.card-container.card-sticky .card-wrap .card-body[data-v-52307124]{flex:1}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".checkbox-outer-container[data-v-5376b6f7]{display:inline-flex;flex-direction:column}.checkbox-outer-container-description[data-v-5376b6f7]{color:var(--input-label);opacity:.8}.checkbox-outer-container-description[data-v-5376b6f7],.checkbox-outer-container-extra[data-v-5376b6f7]{font-size:14px;margin-left:19px;margin-top:5px}.checkbox-container[data-v-5376b6f7]{position:relative;display:inline-flex;align-items:center;margin:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:var(--border-radius)}.checkbox-container .checkbox-label[data-v-5376b6f7]{color:var(--input-label);display:inline-flex;margin:0 10px 0 5px}.checkbox-container .checkbox-label.checkbox-primary[data-v-5376b6f7]{color:inherit;font-weight:600}.checkbox-container .checkbox-info[data-v-5376b6f7]{line-height:normal;margin-left:4px}.checkbox-container .checkbox-info[data-v-5376b6f7]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px}.checkbox-container .checkbox-custom[data-v-5376b6f7]{height:14px;width:14px;background-color:var(--body-bg);border-radius:var(--border-radius);border:1px solid var(--input-border);flex-shrink:0}.checkbox-container .checkbox-custom[data-v-5376b6f7]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px;border-radius:0}.checkbox-container .checkbox-custom[data-v-5376b6f7]:focus{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px;border-radius:0}.checkbox-container input[data-v-5376b6f7]{opacity:0;position:absolute;z-index:-1}.checkbox-container input:focus-visible~.checkbox-custom[data-v-5376b6f7]{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px;border-radius:0}.checkbox-container input:checked~.checkbox-custom[data-v-5376b6f7]{background-color:var(--active,var(--primary));transform:rotate(0deg) scale(1);opacity:1;border:1px solid var(--checkbox-border,var(--primary))}.checkbox-container .checkbox-custom[data-v-5376b6f7]:after{position:absolute;content:\\\"\\\";left:0;top:0;height:0;width:0;border-radius:var(--border-radius);border:solid;border-color:var(--input-text);border-width:0 3px 3px 0;transform:rotate(0deg) scale(0);opacity:1}.checkbox-container input:checked~.checkbox-custom[data-v-5376b6f7]:after{transform:rotate(45deg) scale(1);opacity:1;left:4px;width:4px;height:10px;border:solid;border-color:var(--checkbox-tick);border-width:0 2px 2px 0;background-color:transparent}.checkbox-container input:checked~.checkbox-custom.indeterminate[data-v-5376b6f7]:after{transform:scale(1);opacity:1;left:3px;top:2px;width:6px;height:5px;border:solid;border-color:var(--checkbox-tick);border-width:0 0 2px 0;background-color:transparent}.checkbox-container.disabled .checkbox-custom[data-v-5376b6f7],.checkbox-container.disabled input:checked~.checkbox-custom[data-v-5376b6f7]{background-color:var(--checkbox-disabled-bg);border-color:var(--checkbox-disabled-bg)}.checkbox-container.disabled input:checked~.checkbox-custom[data-v-5376b6f7]:after{border-color:var(--checkbox-tick-disabled)}.checkbox-container.disabled[data-v-5376b6f7]{cursor:not-allowed}.checkbox-container .checkbox-view[data-v-5376b6f7]{display:flex;flex-direction:column}.checkbox-container .checkbox-view LABEL[data-v-5376b6f7]{color:var(--input-label)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".multiline-password[data-v-01188989]:not(:focus){-webkit-text-security:disc}.labeled-input.view input[data-v-01188989]{text-overflow:ellipsis}.hideArrows input[data-v-01188989]::-webkit-inner-spin-button,.hideArrows input[data-v-01188989]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.hideArrows input[type=number][data-v-01188989]{-moz-appearance:textfield}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".radio-view[data-v-72e20a8d]{display:flex;flex-direction:column}.radio-view LABEL[data-v-72e20a8d]{color:var(--input-label)}.radio-group .text-label[data-v-72e20a8d]{display:block;padding-bottom:5px}.radio-container[data-v-72e20a8d]{position:relative;display:inline-flex;align-items:flex-start;margin:0;left:-4px;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:var(--border-radius);padding-bottom:5px;padding-left:4px}.radio-container[data-v-72e20a8d],.radio-container .radio-button-outer-container-description[data-v-72e20a8d],.radio-container .radio-label[data-v-72e20a8d]{cursor:pointer}.radio-container.disabled[data-v-72e20a8d],.radio-container.disabled .radio-button-outer-container-description[data-v-72e20a8d],.radio-container.disabled .radio-label[data-v-72e20a8d]{cursor:not-allowed}.radio-container .radio-custom[data-v-72e20a8d]{height:14px;width:14px;min-height:14px;min-width:14px;background-color:var(--input-bg);border-radius:50%;border:1.5px solid var(--input-border);margin-top:5px}.radio-container input[data-v-72e20a8d]{display:none}.radio-container .radio-custom[aria-checked=true][data-v-72e20a8d]{background-color:var(--active,var(--primary));transform:rotate(0deg) scale(1);opacity:1;border:1.5px solid var(--active,var(--primary))}.radio-container .radio-custom[aria-checked=true].text-muted[data-v-72e20a8d]{opacity:.25}.radio-container input:disabled~.radio-custom[data-v-72e20a8d]:not([aria-checked=true]){background-color:var(--disabled-bg);opacity:.25}.radio-container .radio-button-outer-container-description[data-v-72e20a8d]{color:var(--input-label);font-size:11px;margin-top:5px}.radio-container .labeling[data-v-72e20a8d]{display:inline-flex;flex-direction:column;margin:3px 10px 0 5px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".radio-group[data-v-275b96ee]:focus,.radio-group[data-v-275b96ee]:focus-visible{border:none;outline:none}.radio-group:focus-visible .radio-button-checked[data-v-275b96ee]{outline:2px solid var(--primary-keyboard-focus)}.radio-group h3[data-v-275b96ee]{position:relative}.radio-group.row[data-v-275b96ee]{display:flex}.radio-group.row .radio-container[data-v-275b96ee]{margin-right:10px}.radio-group .label[data-v-275b96ee]{font-size:14px!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".toggle-container[data-v-fcfd5604]{align-items:center;display:flex}.toggle-container span[data-v-fcfd5604]:first-child{padding-right:6px}.toggle-container span[data-v-fcfd5604]:last-child{padding-left:6px}.toggle-container.toggle-disabled[data-v-fcfd5604]{pointer-events:none}.toggle-container.toggle-disabled .slider[data-v-fcfd5604]{background-color:var(--checkbox-disabled-bg)}.toggle-container.toggle-disabled .slider[data-v-fcfd5604]:before{opacity:.6}.switch[data-v-fcfd5604]{position:relative;display:inline-block;width:48px;height:24px}.switch input[data-v-fcfd5604]{opacity:0;width:0;height:0}.slider[data-v-fcfd5604]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--checkbox-disabled-bg);transition:.4s}.slider.focus[data-v-fcfd5604]{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px;transition:0s}.slider[data-v-fcfd5604]:before{position:absolute;content:\\\"\\\";height:16px;width:16px;left:4px;bottom:4px;background-color:var(--checkbox-tick);transition:.4s}input:checked+.slider[data-v-fcfd5604]{background-color:var(--checkbox-ticked-bg)}input:focus+.slider[data-v-fcfd5604]{box-shadow:0 0 1px var(--checkbox-ticked-bg)}input:checked+.slider[data-v-fcfd5604]:before{transform:translateX(24px)}.slider.round[data-v-fcfd5604]{border-radius:34px}.slider.round[data-v-fcfd5604]:before{border-radius:50%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".labeled-tooltip[data-v-0217a440]{position:absolute;width:100%;height:100%;left:0;top:0}.labeled-tooltip.hoverable[data-v-0217a440]{height:0}.labeled-tooltip .status-icon[data-v-0217a440]{position:absolute;right:30px;top:18px;z-index:3}.labeled-tooltip.error .status-icon[data-v-0217a440]{color:var(--error);top:7px;right:5px}.labeled-tooltip.warning .status-icon[data-v-0217a440]{color:var(--warning)}.labeled-tooltip.success .status-icon[data-v-0217a440]{color:var(--success)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-tag[data-v-033f89b8]{display:inline-flex;padding:1px 8px;align-items:center;gap:8px;border-radius:4px;border:1px solid var(--rc-active-border);overflow:hidden;text-overflow:ellipsis;font-family:Lato;font-size:13px;font-style:normal;font-weight:400;line-height:22px;color:var(--body-text)}.rc-tag button[data-v-033f89b8]{padding:0;line-height:12px;min-height:12px;background:none}.rc-tag button[data-v-033f89b8],.rc-tag button .icon-close[data-v-033f89b8]{width:12px;height:12px;font-size:12px}.rc-tag.disabled button[data-v-033f89b8]{cursor:not-allowed}.rc-tag.active[data-v-033f89b8]{border-color:var(--rc-active-border);background:var(--rc-active-background);cursor:pointer}.rc-tag.active.highlight[data-v-033f89b8],.rc-tag.active[data-v-033f89b8]:hover{border-color:var(--rc-primary-hover);background:var(--rc-active-background)}.rc-tag.active.disabled[data-v-033f89b8]{border-color:var(--rc-active-border);background:var(--rc-active-disabled-background);color:var(--rc-disabled-text-color);cursor:not-allowed}.rc-tag.inactive[data-v-033f89b8]{background:var(--rc-inactive-background);border-color:var(--rc-inactive-border)}.rc-tag.inactive.disabled[data-v-033f89b8]{border-color:var(--rc-inactive-disabled-border);color:var(--rc-disabled-text-color)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-button[data-v-7132dc2f]{display:inline-flex;align-items:center;justify-content:center}.rc-button[data-v-7132dc2f]> .icon:not(:only-child){margin-right:0}.rc-button.variant-primary[data-v-7132dc2f]{background:var(--primary);color:var(--primary-text)}.rc-button.variant-primary._hover[data-v-7132dc2f],.rc-button.variant-primary.focused[data-v-7132dc2f],.rc-button.variant-primary[data-v-7132dc2f]:focus,.rc-button.variant-primary[data-v-7132dc2f]:hover{background-color:var(--primary-hover-bg);color:var(--primary-text)}.rc-button.variant-primary[data-v-7132dc2f]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px}.rc-button.variant-primary[data-v-7132dc2f]:disabled{background:var(--primary);color:var(--primary-text);opacity:.5}.rc-button.variant-secondary[data-v-7132dc2f]{background:var(--secondary,transparent);color:var(--on-secondary,var(--primary));border:solid 1px var(--secondary-border,var(--primary))}.rc-button.variant-secondary._hover[data-v-7132dc2f],.rc-button.variant-secondary[data-v-7132dc2f]:hover{background:var(--secondary-hover,transparent);color:var(--on-secondary,var(--lightest))}.rc-button.variant-secondary.focused[data-v-7132dc2f],.rc-button.variant-secondary[data-v-7132dc2f]:focus{background-color:var(--secondary-hover,var(--primary-hover-bg));color:var(--on-secondary,var(--primary-text))}.rc-button.variant-secondary[data-v-7132dc2f]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px}.rc-button.variant-tertiary[data-v-7132dc2f]{background:var(--tertiary,var(--accent-btn));color:var(--on-tertiary,var(--primary));border:solid 1px var(--tertiary-border,var(--primary))}.rc-button.variant-tertiary[data-v-7132dc2f]:hover{background:var(--tertiary-hover,var(--accent-btn));color:var(--on-tertiary-hover,var(--lightest))}.rc-button.variant-tertiary.focused[data-v-7132dc2f],.rc-button.variant-tertiary[data-v-7132dc2f]:focus{background-color:var(--tertiary-hover,var(--primary-hover-bg));color:var(--on-tertiary,var(--primary-text))}.rc-button.variant-tertiary[data-v-7132dc2f]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px}.rc-button.variant-link[data-v-7132dc2f]{background:transparent;color:var(--link)}.rc-button.variant-link._hover[data-v-7132dc2f],.rc-button.variant-link[data-v-7132dc2f]:hover{color:var(--lightest);background-color:var(--accent-btn);box-shadow:none}.rc-button.variant-link.focused[data-v-7132dc2f],.rc-button.variant-link[data-v-7132dc2f]:focus{outline:2px solid var(--primary-keyboard-focus);outline-offset:-2px;background:transparent;color:var(--link);box-shadow:none}.rc-button.variant-link[data-v-7132dc2f]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:2px}.rc-button.variant-multi-action[data-v-7132dc2f]{background:var(--accent-btn);border:solid thin var(--primary);color:var(--primary);border-radius:2px}.rc-button.variant-ghost[data-v-7132dc2f]{padding:0;background-color:transparent}.rc-button.variant-ghost.focused[data-v-7132dc2f],.rc-button.variant-ghost[data-v-7132dc2f]:focus{outline:2px solid var(--primary-keyboard-focus);outline-offset:0}.rc-button.variant-ghost[data-v-7132dc2f]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:0}.rc-button.btn-small[data-v-7132dc2f],.rc-button.btn-small[data-v-7132dc2f]:not(.btn-sm){line-height:140%;font-size:12px;min-height:24px;padding:0 8px;gap:8px}.rc-button.btn-medium[data-v-7132dc2f],.rc-button.btn-medium[data-v-7132dc2f]:not(.btn-sm){line-height:140%;font-size:14px;min-height:32px;padding:0 12px;gap:8px}.rc-button.btn-large[data-v-7132dc2f],.rc-button.btn-large[data-v-7132dc2f]:not(.btn-sm){line-height:140%;font-size:16px;min-height:40px;padding:0 16px;gap:12px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".popperContainer[data-v-78ba98f8]{display:contents}.popperContainer[data-v-78ba98f8] .v-popper__popper .v-popper__wrapper{box-shadow:0 6px 18px 0 rgba(0,0,0,.25),0 4px 10px 0 rgba(0,0,0,.15);border-radius:var(--border-radius-lg)}.popperContainer[data-v-78ba98f8] .v-popper__popper .v-popper__wrapper .v-popper__arrow-container{display:none}.popperContainer[data-v-78ba98f8] .v-popper__popper .v-popper__wrapper .v-popper__inner{overflow:unset;padding:10px 0 10px 0}.dropdownTarget[data-v-78ba98f8]{overflow:auto;padding:3px 0}.dropdownTarget[data-v-78ba98f8]:focus,.dropdownTarget[data-v-78ba98f8]:focus-visible{outline:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[dropdown-menu-item][data-v-b3f1b0ce]{display:flex;gap:8px;align-items:center;padding:9px 8px;margin:0 9px;border-radius:4px}[dropdown-menu-item][data-v-b3f1b0ce]:hover{cursor:pointer;background-color:var(--dropdown-hover-bg)}[dropdown-menu-item][data-v-b3f1b0ce]:focus,[dropdown-menu-item][data-v-b3f1b0ce]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:0}[dropdown-menu-item][disabled][data-v-b3f1b0ce]{color:var(--disabled-text)}[dropdown-menu-item][disabled][data-v-b3f1b0ce]:hover{cursor:not-allowed}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[dropdown-menu-item][data-v-42e011ee]{display:flex;gap:8px;align-items:center;padding:9px 8px;margin:0 9px;border-radius:4px}[dropdown-menu-item][data-v-42e011ee]:hover{cursor:pointer;background-color:var(--dropdown-hover-bg)}[dropdown-menu-item][data-v-42e011ee]:focus,[dropdown-menu-item][data-v-42e011ee]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:0}[dropdown-menu-item][disabled][data-v-42e011ee]{color:var(--disabled-text)}[dropdown-menu-item][disabled][data-v-42e011ee]:hover{cursor:not-allowed}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[dropdown-menu-item][data-v-f73956ca]{display:flex;gap:8px;align-items:center;padding:9px 8px;margin:0 9px;border-radius:4px}[dropdown-menu-item][data-v-f73956ca]:hover{cursor:pointer;background-color:var(--dropdown-hover-bg)}[dropdown-menu-item][data-v-f73956ca]:focus,[dropdown-menu-item][data-v-f73956ca]:focus-visible{outline:2px solid var(--primary-keyboard-focus);outline-offset:0}[dropdown-menu-item][disabled][data-v-f73956ca]{color:var(--disabled-text)}[dropdown-menu-item][disabled][data-v-f73956ca]:hover{cursor:not-allowed}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-icon[data-v-2624fc9a]{font-size:var(--v4e6c3731);color:var(--v17bbae7c)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".item-card[data-v-c29a6d30]{display:flex;padding:16px;align-items:flex-start;gap:var(--gap-lg);border-radius:var(--border-radius-md);border:1px solid var(--border);background:var(--body-bg);cursor:var(--v058c8e7a)}.item-card.clickable[data-v-c29a6d30]:hover,.item-card.selected[data-v-c29a6d30]{border-color:var(--primary)}.item-card.disabled[data-v-c29a6d30]{cursor:not-allowed;color:var(--disabled-text)}.item-card.disabled[data-v-c29a6d30],.item-card.disabled .item-card-image[data-v-c29a6d30]{background-color:var(--disabled-bg)}.item-card.disabled .item-card-content[data-v-c29a6d30],.item-card.disabled .item-card-header-title[data-v-c29a6d30]{color:var(--disabled-text)}.item-card[data-v-c29a6d30]:has(.item-card-header-left:focus-visible){border-color:var(--primary);outline:2px solid var(--primary-keyboard-focus);outline-offset:-2px}.item-card[data-v-c29a6d30]:focus-visible{outline:none}.item-card-image[data-v-c29a6d30]{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--rc-image-bg);border-radius:var(--border-radius);color:var(--rc-image-color)}.item-card-image.small[data-v-c29a6d30]{width:32px;height:32px;margin-right:12px}.item-card-header[data-v-c29a6d30]{display:flex;align-items:center;justify-content:space-between;width:100%;height:24px;color:var(--body-text)}.item-card-header.small[data-v-c29a6d30]{height:32px}.item-card-header-left[data-v-c29a6d30],.item-card-header-right[data-v-c29a6d30]{display:flex;align-items:center}.item-card-header-left[data-v-c29a6d30]{flex-grow:1;min-width:0}.item-card-header-left[data-v-c29a6d30]:focus-visible{outline:none}.item-card-header-title[data-v-c29a6d30]{max-width:80%;font-size:18px;font-weight:600;margin-bottom:0;line-height:24px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.item-card-header-statuses[data-v-c29a6d30]{display:flex;align-items:flex-start;gap:12px}.item-card-header-statuses-status[data-v-c29a6d30]{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.item-card-header-statuses-status .icon[data-v-c29a6d30]{font-size:23px}.item-card-header-statuses-status .icon.error[data-v-c29a6d30]{color:var(--error)}.item-card-header-statuses-status .icon.info[data-v-c29a6d30]{color:var(--info)}.item-card-header-statuses-status .icon.success[data-v-c29a6d30]{color:var(--success)}.item-card-header-action-menu[data-v-c29a6d30]{margin-left:8px;margin-right:-8px}.item-card-content[data-v-c29a6d30]{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:21px;word-break:break-word}.item-card-pill[data-v-c29a6d30]{display:flex;width:48px;padding:4px 8px;margin-top:16px;justify-content:center;align-items:center;border-radius:var(--border-radius);background:var(--default);text-transform:uppercase;color:var(--disabled-text);font-size:10px;font-weight:600}.item-card-body[data-v-c29a6d30]{display:flex;flex-direction:row;width:100%;gap:var(--gap-lg)}.item-card-body-details[data-v-c29a6d30],.item-card-body.small[data-v-c29a6d30]{flex-direction:column;align-items:flex-start;gap:var(--gap);flex:1}.item-card-body-details[data-v-c29a6d30]{display:flex;width:calc(100% - var(--gap-lg) - 48px)}.item-card-body-details.small[data-v-c29a6d30]{width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rc-item-card-action .v-popper .icon-actions{color:var(--body-text);font-size:19px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".mappings-cell[data-v-5bd9a608]{display:flex;flex-direction:column;gap:8px}.mapping-entry[data-v-5bd9a608]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.mapping-entry .icon[data-v-5bd9a608]{font-size:16px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".role[data-v-54d15ef1]{align-items:center;background-color:rgba(0,0,0,.05);border:1px solid var(--header-border);border-radius:5px;color:var(--tag-text);line-height:20px;padding:2px 5px;white-space:nowrap;display:inline-flex;margin-right:3px}.role-value.text-link-enabled[data-v-54d15ef1]{cursor:pointer}.role-value.text-link-enabled[data-v-54d15ef1]:hover{color:var(--primary)}.role-value+.icon-close[data-v-54d15ef1]{margin-left:3px;cursor:pointer}.role-value+.icon-close[data-v-54d15ef1]:hover{color:var(--primary)}.project-members[data-v-54d15ef1] .group-bar{display:flex;justify-content:space-between}.cluster-add[data-v-54d15ef1]{justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-23.use[1]!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-23.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-23.use[3]!../../../../node_modules/xterm/css/xterm.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#__layout,#__nuxt,MAIN,body{height:100%}.harvester-shell-container{height:100%;overflow:hidden}.harvester-shell-container .shell-body,.harvester-shell-container .terminal.xterm{height:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-56da10be]{overflow:hidden}.error .row[data-v-56da10be]{align-items:center}.error h1[data-v-56da10be]{font-size:5rem}.error .desert-landscape img[data-v-56da10be]{max-width:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".displayed-keys .banner[data-v-7821dcb9]{margin:0}.displayed-banners[data-v-7821dcb9]{max-height:155px;overflow:auto}.actions[data-v-7821dcb9]{width:100%;display:flex;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".combination-keys__container[data-v-11c334cb]{max-width:60px}.combination-keys__container DIV[data-v-11c334cb],.combination-keys__container SPAN[data-v-11c334cb]{display:block;text-align:center}.combination-keys__container SPAN[data-v-11c334cb]{border-radius:3px}.combination-keys__container SPAN.open[data-v-11c334cb],.combination-keys__container SPAN[data-v-11c334cb]:hover{color:var(--primary-hover-text);background:var(--primary-hover-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm-console[data-v-073fcb40]{height:100%;display:grid;grid-template-rows:30px auto}.combination-keys[data-v-073fcb40]{background:#282828}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm-console .v-popper__arrow-container{display:none}.vm-console .v-popper__popper{margin-top:8px}.vm-console .v-popper__inner{overflow-y:visible}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".mappings-columns[data-v-37c5de6a]{display:flex;flex-direction:column;gap:32px}@media only screen and (min-width:768px){.mappings-columns[data-v-37c5de6a]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}@media only screen and (min-width:992px){.mappings-columns[data-v-37c5de6a]{gap:48px}}@media only screen and (min-width:1281px){.mappings-columns[data-v-37c5de6a]{gap:64px}}.configure-mappings[data-v-37c5de6a]{display:flex;flex-direction:column;gap:24px}.configure-mappings .line-height-20[data-v-37c5de6a]{line-height:20px}.source-detail[data-v-37c5de6a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".requirements-banner[data-v-a9af2e3a]{font-weight:400}.requirements-banner .requirements-banner-title[data-v-a9af2e3a]{font-weight:600}.configure-provider-step[data-v-a9af2e3a]{display:flex;flex-direction:column;gap:24px}.configure-provider-step .line-height-20[data-v-a9af2e3a]{line-height:20px}.configure-provider-step .configure-provider-step-content[data-v-a9af2e3a]{display:flex;flex-direction:column;gap:12px}.configure-provider-step .configure-provider-step-content .configure-provider-step-form[data-v-a9af2e3a]{display:flex;flex-direction:column;gap:20px}.configure-provider-step[data-v-a9af2e3a] .checkbox-label{color:var(--body-text)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".mapping-column[data-v-5f3e9604]{display:flex;gap:12px;flex-direction:column}.mapping-column[data-v-5f3e9604] .item-card-header{display:none}.mapping-section-title[data-v-5f3e9604]{font-weight:600;margin:0 0 5px 0;line-height:28px}.card-content-row[data-v-5f3e9604]{display:flex;align-items:center;gap:16px;width:100%}.card-content-column[data-v-5f3e9604]{display:flex;flex-direction:column;gap:8px;width:100%}.mapping-source[data-v-5f3e9604]{display:flex;flex-direction:column;flex:2;min-width:100px;font-size:14px;line-height:20px}.mapping-source .source-name[data-v-5f3e9604]{font-weight:600;font-size:14px}.mapping-source .source-detail[data-v-5f3e9604],.mapping-source .source-name[data-v-5f3e9604]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mapping-source .used-by[data-v-5f3e9604]{margin-top:4px;font-size:14px;line-height:24px}.mapping-arrow[data-v-5f3e9604]{font-size:22px;flex-shrink:0}.mapping-target[data-v-5f3e9604]{flex:3;min-width:0;overflow:hidden}.line-height-20[data-v-5f3e9604]{line-height:20px}.bg-light-gray[data-v-5f3e9604]{background-color:var(--category-active)!important;border:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".review-migration[data-v-c23ad798]{gap:36px}.review-migration-content[data-v-c23ad798]{display:flex;flex-direction:column;gap:20px}.section-title[data-v-c23ad798]{font-weight:600}.details-grid[data-v-c23ad798]{display:grid;grid-template-columns:minmax(230px,1fr) 1fr 1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:12px clamp(64px,8vw,128px);line-height:20px}.detail-column[data-v-c23ad798]{display:flex;flex-direction:column;gap:4px}.detail-column.grid-column-2[data-v-c23ad798]{grid-column:span 2}.detail-item[data-v-c23ad798]{display:flex;flex-direction:row;justify-content:space-between}.detail-item .detail-label[data-v-c23ad798]{font-size:14px;color:var(--muted)}.detail-item .detail-value[data-v-c23ad798]{font-weight:600;font-size:14px}.detail-item .detail-value.detail-value-large[data-v-c23ad798]{font-size:24px}.vm-cards-grid[data-v-c23ad798]{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px}.vm-card-content[data-v-c23ad798]{display:flex;flex-direction:column;gap:16px;line-height:20px}.vm-card-specs[data-v-c23ad798]{display:flex;flex-direction:row;gap:16px;align-items:center}.vm-card-specs .vm-os[data-v-c23ad798]{font-size:14px}.vm-card-specs .vm-resources[data-v-c23ad798]{font-size:14px;color:var(--muted);display:inline-flex;align-items:center;gap:8px}.banner-title[data-v-c23ad798]{font-weight:600}.migration-details[data-v-c23ad798]{display:flex;flex-direction:column;gap:12px}header[data-v-c23ad798]{margin:0}.vm-section[data-v-c23ad798]{display:flex;flex-direction:column;gap:16px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vm-table-title .text-deemphasized[data-v-0f09e0de]{font-size:13px}.vm-name-cell[data-v-0f09e0de]{display:flex;flex-direction:column;font-size:14px}.vm-name-cell .vm-id[data-v-0f09e0de],.vm-name-cell .vm-name[data-v-0f09e0de]{line-height:20px}.select-vms-step[data-v-0f09e0de]{position:relative;display:flex;flex-direction:column;gap:20px}.select-vms-step .line-height-20[data-v-0f09e0de]{line-height:20px}[data-v-0f09e0de] .select-all-banner-row .select-all-banner-cell{text-align:center;padding:8px 16px;background-color:var(--sortable-table-header-bg);border-bottom:1px solid var(--border);font-size:13px}[data-v-0f09e0de] .select-all-banner-row .select-all-banner-cell a{color:var(--primary);cursor:pointer;font-weight:600;margin-left:5px}[data-v-0f09e0de] .select-all-banner-row .select-all-banner-cell a:hover{text-decoration:underline}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bundleModal .support-modal[data-v-edef926a]{border-radius:var(--border-radius);max-height:100vh}.bundleModal .labeled-select.taggable[data-v-edef926a] .vs__selected-options .vs__selected.vs__selected>button{margin:0 7px}.bundleModal .bundle[data-v-edef926a]{cursor:pointer;color:var(--primary)}.bundleModal .icon-spinner[data-v-edef926a]{font-size:100px}.bundleModal .content .circle[data-v-edef926a]{padding:10px 0;height:160px}.bundleModal .content .namespace-select[data-v-edef926a] .vs__dropdown-menu{max-height:210px}.bundleModal div[data-v-edef926a]{line-height:normal}.bundleModal .footer[data-v-edef926a]{display:flex;justify-content:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#air-gap[data-v-642e2b87]{padding:20px}#air-gap[data-v-642e2b87] .image-group .radio-group{display:flex}#air-gap[data-v-642e2b87] .image-group .radio-group .radio-container{margin-right:30px}#air-gap .parent[data-v-642e2b87]{grid-template-columns:auto 40px}#air-gap .chooseFile[data-v-642e2b87]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header H1[data-v-a0fecebc]{flex:1}.header[data-v-a0fecebc]{border-bottom:1px solid var(--border);margin-bottom:0;padding-bottom:20px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".link-example[data-v-45ae37da]{display:flex;align-content:center}.link-example a[data-v-45ae37da]{margin:auto}.logo-container[data-v-45ae37da]{display:flex;flex-direction:column}.logo-container[data-v-45ae37da] .simple-box{position:relative;flex:1;max-height:120px}.logo-container[data-v-45ae37da] .simple-box .content{height:100%;display:flex}.logo-container[data-v-45ae37da] .simple-box .logo-preview{max-width:100%}.logo-container LABEL[data-v-45ae37da]{position:absolute;top:10px;left:10px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#__layout[data-v-2efbfdaf],#__nuxt[data-v-2efbfdaf],body[data-v-2efbfdaf],main[data-v-2efbfdaf]{height:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".content[data-v-74e3f663]{display:grid;grid-column-gap:20px;grid-row-gap:20px;grid-template-columns:70% 30%}.only-community[data-v-74e3f663]{display:grid;grid-template-columns:100%}.community[data-v-74e3f663]{border-left:1px solid var(--border);padding-left:20px}.community>h2[data-v-74e3f663]{font-size:18px;font-weight:300;margin-bottom:20px}.community .support-link[data-v-74e3f663]{margin:10px 0}.box[data-v-74e3f663]{padding:20px;border:1px solid var(--border)}.box.box-primary[data-v-74e3f663]{border-color:var(--primary)}.box>h2[data-v-74e3f663]{font-size:20px;font-weight:300}.box>div[data-v-74e3f663]{font-weight:300;line-height:18px;opacity:.8}.role-secondary[data-v-74e3f663]:focus{background-color:transparent}.warning[data-v-74e3f663]{margin:0 -5px 0 -5px;padding:5px;background-color:var(--warning-banner-bg)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dashboard-root[data-v-140c2578]{display:flex;flex-direction:column;height:100vh}.dashboard-content[data-v-140c2578]{display:grid;flex-grow:1;grid-template-areas:\\\"main\\\";grid-template-columns:auto;grid-template-rows:auto}.logo[data-v-140c2578]{margin:200px 0 40px 0}.logo[data-v-140c2578],.tagline[data-v-140c2578]{display:flex;justify-content:center}.tagline[data-v-140c2578]{margin-top:30px}.tagline>div[data-v-140c2578]{font-size:16px;line-height:22px;max-width:80%;text-align:center}.description[data-v-140c2578]{font-size:24px!important;font-weight:400}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".plan-name-cell .plan-name[data-v-362241b3]{font-weight:500;line-height:20px}.plan-name-cell .plan-vms[data-v-362241b3]{font-size:12px;line-height:20px;color:var(--muted)}.progress-cells[data-v-362241b3]{display:flex;flex-direction:column;gap:16px}.vm-progress-header[data-v-362241b3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.vm-name[data-v-362241b3]{font-size:14px}.vm-name-block[data-v-362241b3]{display:flex;flex-direction:row;gap:8px;align-items:center}.vm-id[data-v-362241b3]{font-size:11px}.vm-pct[data-v-362241b3]{font-size:14px;min-width:40px;text-align:left}.vm-pct-block[data-v-362241b3]{display:flex;align-items:center;gap:14px;justify-content:space-between}.vm-bar[data-v-362241b3]{width:100%}.step-label[data-v-362241b3]{font-size:13px;margin-top:4px;line-height:20px}.step-label.text-error[data-v-362241b3]{color:var(--error)}.table-title[data-v-362241b3]{font-weight:600}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".xterm{cursor:text;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm .xterm-cursor-pointer,.xterm.xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vue-flow__controls{box-shadow:0 0 2px 1px rgba(0,0,0,.08)}.vue-flow__controls-button{background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.vue-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.vue-flow__controls-button:hover{background:#f4f4f4}.vue-flow__controls-button:disabled{pointer-events:none}.vue-flow__controls-button:disabled svg{fill-opacity:.4}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vue-flow{position:relative;width:100%;height:100%;overflow:hidden;z-index:0;direction:ltr}.vue-flow__container{position:absolute;height:100%;width:100%;left:0;top:0}.vue-flow__pane{z-index:1}.vue-flow__pane.draggable{cursor:grab}.vue-flow__pane.selection{cursor:pointer}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__transformationpane{transform-origin:0 0;z-index:2;pointer-events:none}.vue-flow__viewport{z-index:4;overflow:clip}.vue-flow__selection{z-index:6}.vue-flow__edge-labels{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible{outline:none}.vue-flow .vue-flow__edges{pointer-events:none;overflow:visible}.vue-flow__connection-path,.vue-flow__edge-path{stroke:#b1b1b7;stroke-width:1;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__edge.animated path.vue-flow__edge-interaction{stroke-dasharray:none;animation:none}.vue-flow__edge.inactive{pointer-events:none}.vue-flow__edge.selected,.vue-flow__edge:focus,.vue-flow__edge:focus-visible{outline:none}.vue-flow__edge.selected .vue-flow__edge-path,.vue-flow__edge:focus .vue-flow__edge-path,.vue-flow__edge:focus-visible .vue-flow__edge-path{stroke:#555}.vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge-textbg{fill:#fff}.vue-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.vue-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{left:50%;bottom:0;transform:translate(-50%,50%)}.vue-flow__handle-top{left:50%;top:0;transform:translate(-50%,-50%)}.vue-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.vue-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.vue-flow__edgeupdater{cursor:move;pointer-events:all}.vue-flow__panel{position:absolute;z-index:5;margin:15px}.vue-flow__panel.top{top:0}.vue-flow__panel.bottom{bottom:0}.vue-flow__panel.left{left:0}.vue-flow__panel.right{right:0}.vue-flow__panel.center{left:50%;transform:translateX(-50%)}@keyframes dashdraw{0%{stroke-dashoffset:10}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--vf-node-bg:#fff;--vf-node-text:#222;--vf-connection-path:#b1b1b7;--vf-handle:#555}.vue-flow__edge.updating .vue-flow__edge-path{stroke:#777}.vue-flow__edge-text{font-size:10px}.vue-flow__edge-textbg{fill:#fff}.vue-flow__connection-path{stroke:var(--vf-connection-path)}.vue-flow__node{cursor:grab}.vue-flow__node.selectable:focus,.vue-flow__node.selectable:focus-visible{outline:none}.vue-flow__node-default,.vue-flow__node-input,.vue-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;text-align:center;border-width:1px;border-style:solid;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-color:var(--vf-node-color)}.vue-flow__node-default.selected,.vue-flow__node-default.selected:hover,.vue-flow__node-input.selected,.vue-flow__node-input.selected:hover,.vue-flow__node-output.selected,.vue-flow__node-output.selected:hover{box-shadow:0 0 0 .5px var(--vf-box-shadow)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible,.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible,.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{outline:none;border:1px solid #555}.vue-flow__node-default .vue-flow__handle,.vue-flow__node-input .vue-flow__handle,.vue-flow__node-output .vue-flow__handle{background:var(--vf-handle)}.vue-flow__node-default.selectable:hover,.vue-flow__node-input.selectable:hover,.vue-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px rgba(0,0,0,.08)}.vue-flow__node-input{--vf-node-color:var(--vf-node-color,#0041d0);--vf-handle:var(--vf-node-color,#0041d0);--vf-box-shadow:var(--vf-node-color,#0041d0);background:var(--vf-node-bg);border-color:var(--vf-node-color,#0041d0)}.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible{outline:none;border:1px solid var(--vf-node-color,#0041d0)}.vue-flow__node-default{--vf-handle:var(--vf-node-color,#1a192b);--vf-box-shadow:var(--vf-node-color,#1a192b);background:var(--vf-node-bg);border-color:var(--vf-node-color,#1a192b)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible{outline:none;border:1px solid var(--vf-node-color,#1a192b)}.vue-flow__node-output{--vf-handle:var(--vf-node-color,#ff0072);--vf-box-shadow:var(--vf-node-color,#ff0072);background:var(--vf-node-bg);border-color:var(--vf-node-color,#ff0072)}.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{outline:none;border:1px solid var(--vf-node-color,#ff0072)}.vue-flow__nodesselection-rect,.vue-flow__selection{background:rgba(0,89,220,.08);border:1px dotted rgba(0,89,220,.8)}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible,.vue-flow__selection:focus,.vue-flow__selection:focus-visible{outline:none}.vue-flow__handle{width:6px;height:6px;background:var(--vf-handle);border:1px solid #fff;border-radius:100%}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vue-flow__minimap{background-color:#fff}.vue-flow__minimap.pannable{cursor:grab}.vue-flow__minimap.dragging{cursor:grabbing}.vue-flow__minimap-mask.pannable{cursor:grab}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-25.use[1]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[2]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-25.use[4]!../../../node_modules/@vue-flow/core/dist/style.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-25.use[1]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[2]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-25.use[4]!../../../node_modules/@vue-flow/core/dist/theme-default.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_2___ from \"-!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-25.use[1]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[2]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-25.use[4]!../../../node_modules/@vue-flow/controls/dist/style.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_3___ from \"-!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-25.use[1]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[2]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-25.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-25.use[4]!../../../node_modules/@vue-flow/minimap/dist/style.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_2___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\nvar types_1 = require(\"./types\");\nvar utils_1 = require(\"./utils\");\nfunction getExtension(filename, language) {\n var filenameParts = filename.split('.');\n return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language;\n}\nfunction startsWithAny(str, prefixes) {\n return prefixes.reduce(function (startsWith, prefix) { return startsWith || str.startsWith(prefix); }, false);\n}\nvar baseDiffFilenamePrefixes = ['a/', 'b/', 'i/', 'w/', 'c/', 'o/'];\nfunction getFilename(line, linePrefix, extraPrefix) {\n var prefixes = extraPrefix !== undefined ? __spreadArray(__spreadArray([], baseDiffFilenamePrefixes, true), [extraPrefix], false) : baseDiffFilenamePrefixes;\n var FilenameRegExp = linePrefix\n ? new RegExp(\"^\".concat((0, utils_1.escapeForRegExp)(linePrefix), \" \\\"?(.+?)\\\"?$\"))\n : new RegExp('^\"?(.+?)\"?$');\n var _a = FilenameRegExp.exec(line) || [], _b = _a[1], filename = _b === void 0 ? '' : _b;\n var matchingPrefix = prefixes.find(function (p) { return filename.indexOf(p) === 0; });\n var fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename;\n return fnameWithoutPrefix.replace(/\\s+\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)? [+-]\\d{4}.*$/, '');\n}\nfunction getSrcFilename(line, srcPrefix) {\n return getFilename(line, '---', srcPrefix);\n}\nfunction getDstFilename(line, dstPrefix) {\n return getFilename(line, '+++', dstPrefix);\n}\nfunction parse(diffInput, config) {\n if (config === void 0) { config = {}; }\n var files = [];\n var currentFile = null;\n var currentBlock = null;\n var oldLine = null;\n var oldLine2 = null;\n var newLine = null;\n var possibleOldName = null;\n var possibleNewName = null;\n var oldFileNameHeader = '--- ';\n var newFileNameHeader = '+++ ';\n var hunkHeaderPrefix = '@@';\n var oldMode = /^old mode (\\d{6})/;\n var newMode = /^new mode (\\d{6})/;\n var deletedFileMode = /^deleted file mode (\\d{6})/;\n var newFileMode = /^new file mode (\\d{6})/;\n var copyFrom = /^copy from \"?(.+)\"?/;\n var copyTo = /^copy to \"?(.+)\"?/;\n var renameFrom = /^rename from \"?(.+)\"?/;\n var renameTo = /^rename to \"?(.+)\"?/;\n var similarityIndex = /^similarity index (\\d+)%/;\n var dissimilarityIndex = /^dissimilarity index (\\d+)%/;\n var index = /^index ([\\da-z]+)\\.\\.([\\da-z]+)\\s*(\\d{6})?/;\n var binaryFiles = /^Binary files (.*) and (.*) differ/;\n var binaryDiff = /^GIT binary patch/;\n var combinedIndex = /^index ([\\da-z]+),([\\da-z]+)\\.\\.([\\da-z]+)/;\n var combinedMode = /^mode (\\d{6}),(\\d{6})\\.\\.(\\d{6})/;\n var combinedNewFile = /^new file mode (\\d{6})/;\n var combinedDeletedFile = /^deleted file mode (\\d{6}),(\\d{6})/;\n var diffLines = diffInput\n .replace(/\\\\ No newline at end of file/g, '')\n .replace(/\\r\\n?/g, '\\n')\n .split('\\n');\n function saveBlock() {\n if (currentBlock !== null && currentFile !== null) {\n currentFile.blocks.push(currentBlock);\n currentBlock = null;\n }\n }\n function saveFile() {\n if (currentFile !== null) {\n if (!currentFile.oldName && possibleOldName !== null) {\n currentFile.oldName = possibleOldName;\n }\n if (!currentFile.newName && possibleNewName !== null) {\n currentFile.newName = possibleNewName;\n }\n if (currentFile.newName) {\n files.push(currentFile);\n currentFile = null;\n }\n }\n possibleOldName = null;\n possibleNewName = null;\n }\n function startFile() {\n saveBlock();\n saveFile();\n currentFile = {\n blocks: [],\n deletedLines: 0,\n addedLines: 0,\n };\n }\n function startBlock(line) {\n saveBlock();\n var values;\n if (currentFile !== null) {\n if ((values = /^@@ -(\\d+)(?:,\\d+)? \\+(\\d+)(?:,\\d+)? @@.*/.exec(line))) {\n currentFile.isCombined = false;\n oldLine = parseInt(values[1], 10);\n newLine = parseInt(values[2], 10);\n }\n else if ((values = /^@@@ -(\\d+)(?:,\\d+)? -(\\d+)(?:,\\d+)? \\+(\\d+)(?:,\\d+)? @@@.*/.exec(line))) {\n currentFile.isCombined = true;\n oldLine = parseInt(values[1], 10);\n oldLine2 = parseInt(values[2], 10);\n newLine = parseInt(values[3], 10);\n }\n else {\n if (line.startsWith(hunkHeaderPrefix)) {\n console.error('Failed to parse lines, starting in 0!');\n }\n oldLine = 0;\n newLine = 0;\n currentFile.isCombined = false;\n }\n }\n currentBlock = {\n lines: [],\n oldStartLine: oldLine,\n oldStartLine2: oldLine2,\n newStartLine: newLine,\n header: line,\n };\n }\n function createLine(line) {\n if (currentFile === null || currentBlock === null || oldLine === null || newLine === null)\n return;\n var currentLine = {\n content: line,\n };\n var addedPrefixes = currentFile.isCombined ? ['+ ', ' +', '++'] : ['+'];\n var deletedPrefixes = currentFile.isCombined ? ['- ', ' -', '--'] : ['-'];\n if (startsWithAny(line, addedPrefixes)) {\n currentFile.addedLines++;\n currentLine.type = types_1.LineType.INSERT;\n currentLine.oldNumber = undefined;\n currentLine.newNumber = newLine++;\n }\n else if (startsWithAny(line, deletedPrefixes)) {\n currentFile.deletedLines++;\n currentLine.type = types_1.LineType.DELETE;\n currentLine.oldNumber = oldLine++;\n currentLine.newNumber = undefined;\n }\n else {\n currentLine.type = types_1.LineType.CONTEXT;\n currentLine.oldNumber = oldLine++;\n currentLine.newNumber = newLine++;\n }\n currentBlock.lines.push(currentLine);\n }\n function existHunkHeader(line, lineIdx) {\n var idx = lineIdx;\n while (idx < diffLines.length - 3) {\n if (line.startsWith('diff')) {\n return false;\n }\n if (diffLines[idx].startsWith(oldFileNameHeader) &&\n diffLines[idx + 1].startsWith(newFileNameHeader) &&\n diffLines[idx + 2].startsWith(hunkHeaderPrefix)) {\n return true;\n }\n idx++;\n }\n return false;\n }\n diffLines.forEach(function (line, lineIndex) {\n if (!line || line.startsWith('*')) {\n return;\n }\n var values;\n var prevLine = diffLines[lineIndex - 1];\n var nxtLine = diffLines[lineIndex + 1];\n var afterNxtLine = diffLines[lineIndex + 2];\n if (line.startsWith('diff')) {\n startFile();\n var gitDiffStart = /^diff --git \"?([a-ciow]\\/.+)\"? \"?([a-ciow]\\/.+)\"?/;\n if ((values = gitDiffStart.exec(line))) {\n possibleOldName = getFilename(values[1], undefined, config.dstPrefix);\n possibleNewName = getFilename(values[2], undefined, config.srcPrefix);\n }\n if (currentFile === null) {\n throw new Error('Where is my file !!!');\n }\n currentFile.isGitDiff = true;\n return;\n }\n if (!currentFile ||\n (!currentFile.isGitDiff &&\n currentFile &&\n line.startsWith(oldFileNameHeader) &&\n nxtLine.startsWith(newFileNameHeader) &&\n afterNxtLine.startsWith(hunkHeaderPrefix))) {\n startFile();\n }\n if (currentFile === null || currentFile === void 0 ? void 0 : currentFile.isTooBig) {\n return;\n }\n if (currentFile &&\n ((typeof config.diffMaxChanges === 'number' &&\n currentFile.addedLines + currentFile.deletedLines > config.diffMaxChanges) ||\n (typeof config.diffMaxLineLength === 'number' && line.length > config.diffMaxLineLength))) {\n currentFile.isTooBig = true;\n currentFile.addedLines = 0;\n currentFile.deletedLines = 0;\n currentFile.blocks = [];\n currentBlock = null;\n var message = typeof config.diffTooBigMessage === 'function'\n ? config.diffTooBigMessage(files.length)\n : 'Diff too big to be displayed';\n startBlock(message);\n return;\n }\n if ((line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader)) ||\n (line.startsWith(newFileNameHeader) && prevLine.startsWith(oldFileNameHeader))) {\n if (currentFile &&\n !currentFile.oldName &&\n line.startsWith('--- ') &&\n (values = getSrcFilename(line, config.srcPrefix))) {\n currentFile.oldName = values;\n currentFile.language = getExtension(currentFile.oldName, currentFile.language);\n return;\n }\n if (currentFile &&\n !currentFile.newName &&\n line.startsWith('+++ ') &&\n (values = getDstFilename(line, config.dstPrefix))) {\n currentFile.newName = values;\n currentFile.language = getExtension(currentFile.newName, currentFile.language);\n return;\n }\n }\n if (currentFile &&\n (line.startsWith(hunkHeaderPrefix) ||\n (currentFile.isGitDiff && currentFile.oldName && currentFile.newName && !currentBlock))) {\n startBlock(line);\n return;\n }\n if (currentBlock && (line.startsWith('+') || line.startsWith('-') || line.startsWith(' '))) {\n createLine(line);\n return;\n }\n var doesNotExistHunkHeader = !existHunkHeader(line, lineIndex);\n if (currentFile === null) {\n throw new Error('Where is my file !!!');\n }\n if ((values = oldMode.exec(line))) {\n currentFile.oldMode = values[1];\n }\n else if ((values = newMode.exec(line))) {\n currentFile.newMode = values[1];\n }\n else if ((values = deletedFileMode.exec(line))) {\n currentFile.deletedFileMode = values[1];\n currentFile.isDeleted = true;\n }\n else if ((values = newFileMode.exec(line))) {\n currentFile.newFileMode = values[1];\n currentFile.isNew = true;\n }\n else if ((values = copyFrom.exec(line))) {\n if (doesNotExistHunkHeader) {\n currentFile.oldName = values[1];\n }\n currentFile.isCopy = true;\n }\n else if ((values = copyTo.exec(line))) {\n if (doesNotExistHunkHeader) {\n currentFile.newName = values[1];\n }\n currentFile.isCopy = true;\n }\n else if ((values = renameFrom.exec(line))) {\n if (doesNotExistHunkHeader) {\n currentFile.oldName = values[1];\n }\n currentFile.isRename = true;\n }\n else if ((values = renameTo.exec(line))) {\n if (doesNotExistHunkHeader) {\n currentFile.newName = values[1];\n }\n currentFile.isRename = true;\n }\n else if ((values = binaryFiles.exec(line))) {\n currentFile.isBinary = true;\n currentFile.oldName = getFilename(values[1], undefined, config.srcPrefix);\n currentFile.newName = getFilename(values[2], undefined, config.dstPrefix);\n startBlock('Binary file');\n }\n else if (binaryDiff.test(line)) {\n currentFile.isBinary = true;\n startBlock(line);\n }\n else if ((values = similarityIndex.exec(line))) {\n currentFile.unchangedPercentage = parseInt(values[1], 10);\n }\n else if ((values = dissimilarityIndex.exec(line))) {\n currentFile.changedPercentage = parseInt(values[1], 10);\n }\n else if ((values = index.exec(line))) {\n currentFile.checksumBefore = values[1];\n currentFile.checksumAfter = values[2];\n values[3] && (currentFile.mode = values[3]);\n }\n else if ((values = combinedIndex.exec(line))) {\n currentFile.checksumBefore = [values[2], values[3]];\n currentFile.checksumAfter = values[1];\n }\n else if ((values = combinedMode.exec(line))) {\n currentFile.oldMode = [values[2], values[3]];\n currentFile.newMode = values[1];\n }\n else if ((values = combinedNewFile.exec(line))) {\n currentFile.newFileMode = values[1];\n currentFile.isNew = true;\n }\n else if ((values = combinedDeletedFile.exec(line))) {\n currentFile.deletedFileMode = values[1];\n currentFile.isDeleted = true;\n }\n });\n saveBlock();\n saveFile();\n return files;\n}\nexports.parse = parse;\n//# sourceMappingURL=diff-parser.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTemplates = void 0;\nvar Hogan = __importStar(require(\"hogan.js\"));\nexports.defaultTemplates = {};\nexports.defaultTemplates[\"file-summary-line\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(t.rp(\"\"); t.b(t.v(t.f(\"fileName\", c, p, 0))); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.v(t.f(\"addedLines\", c, p, 0))); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.v(t.f(\"deletedLines\", c, p, 0))); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: { \"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.f(\"files\", c, p, 0))); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"\"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"generic-block-header\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.f(\"blockHeader\", c, p, 0))); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"generic-empty-diff\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" File without changes\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"generic-file-path\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(t.rp(\"\"); t.b(t.v(t.f(\"fileDiffName\", c, p, 0))); t.b(\" \"); t.b(\"\\n\" + i); t.b(t.rp(\"\"); t.b(\"\\n\" + i); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" Viewed\"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: { \"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.f(\"lineNumber\", c, p, 0))); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); if (t.s(t.f(\"prefix\", c, p, 1), c, p, 0, 162, 238, \"{{ }}\")) {\n t.rs(c, p, function (c, p, t) { t.b(\" \"); t.b(t.t(t.f(\"prefix\", c, p, 0))); t.b(\" \"); t.b(\"\\n\" + i); });\n c.pop();\n } if (!t.s(t.f(\"prefix\", c, p, 1), c, p, 1, 0, 0, \"\")) {\n t.b(\" \");\n t.b(\"\\n\" + i);\n } ; if (t.s(t.f(\"content\", c, p, 1), c, p, 0, 371, 445, \"{{ }}\")) {\n t.rs(c, p, function (c, p, t) { t.b(\" \"); t.b(t.t(t.f(\"content\", c, p, 0))); t.b(\" \"); t.b(\"\\n\" + i); });\n c.pop();\n } if (!t.s(t.f(\"content\", c, p, 1), c, p, 1, 0, 0, \"\")) {\n t.b(\" \");\n t.b(\"\\n\" + i);\n } ; t.b(\"
\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"\"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"generic-wrapper\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.f(\"content\", c, p, 0))); t.b(\"\\n\" + i); t.b(\"
\"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"icon-file-added\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"icon-file-changed\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"icon-file-deleted\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"icon-file-renamed\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"icon-file\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"line-by-line-file-diff\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.f(\"diffs\", c, p, 0))); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"line-by-line-numbers\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(t.v(t.f(\"oldNumber\", c, p, 0))); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"\"); t.b(t.v(t.f(\"newNumber\", c, p, 0))); t.b(\"
\"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"side-by-side-file-diff\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.d(\"diffs.left\", c, p, 0))); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\" \"); t.b(t.t(t.d(\"diffs.right\", c, p, 0))); t.b(\"\\n\" + i); t.b(\" \"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); t.b(\"\\n\" + i); t.b(\"
\"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"tag-file-added\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"ADDED \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"tag-file-changed\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"CHANGED \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"tag-file-deleted\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"DELETED \"); return t.fl(); }, partials: {}, subs: {} });\nexports.defaultTemplates[\"tag-file-renamed\"] = new Hogan.Template({ code: function (c, p, i) { var t = this; t.b(i = i || \"\"); t.b(\"RENAMED \"); return t.fl(); }, partials: {}, subs: {} });\n//# sourceMappingURL=diff2html-templates.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.html = exports.parse = exports.defaultDiff2HtmlConfig = void 0;\nvar DiffParser = __importStar(require(\"./diff-parser\"));\nvar fileListPrinter = __importStar(require(\"./file-list-renderer\"));\nvar line_by_line_renderer_1 = __importStar(require(\"./line-by-line-renderer\"));\nvar side_by_side_renderer_1 = __importStar(require(\"./side-by-side-renderer\"));\nvar types_1 = require(\"./types\");\nvar hoganjs_utils_1 = __importDefault(require(\"./hoganjs-utils\"));\nexports.defaultDiff2HtmlConfig = __assign(__assign(__assign({}, line_by_line_renderer_1.defaultLineByLineRendererConfig), side_by_side_renderer_1.defaultSideBySideRendererConfig), { outputFormat: types_1.OutputFormatType.LINE_BY_LINE, drawFileList: true });\nfunction parse(diffInput, configuration) {\n if (configuration === void 0) { configuration = {}; }\n return DiffParser.parse(diffInput, __assign(__assign({}, exports.defaultDiff2HtmlConfig), configuration));\n}\nexports.parse = parse;\nfunction html(diffInput, configuration) {\n if (configuration === void 0) { configuration = {}; }\n var config = __assign(__assign({}, exports.defaultDiff2HtmlConfig), configuration);\n var diffJson = typeof diffInput === 'string' ? DiffParser.parse(diffInput, config) : diffInput;\n var hoganUtils = new hoganjs_utils_1.default(config);\n var fileList = config.drawFileList ? fileListPrinter.render(diffJson, hoganUtils) : '';\n var diffOutput = config.outputFormat === 'side-by-side'\n ? new side_by_side_renderer_1.default(hoganUtils, config).render(diffJson)\n : new line_by_line_renderer_1.default(hoganUtils, config).render(diffJson);\n return fileList + diffOutput;\n}\nexports.html = html;\n//# sourceMappingURL=diff2html.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\nvar renderUtils = __importStar(require(\"./render-utils\"));\nvar baseTemplatesPath = 'file-summary';\nvar iconsBaseTemplatesPath = 'icon';\nfunction render(diffFiles, hoganUtils) {\n var files = diffFiles\n .map(function (file) {\n return hoganUtils.render(baseTemplatesPath, 'line', {\n fileHtmlId: renderUtils.getHtmlId(file),\n oldName: file.oldName,\n newName: file.newName,\n fileName: renderUtils.filenameDiff(file),\n deletedLines: '-' + file.deletedLines,\n addedLines: '+' + file.addedLines,\n }, {\n fileIcon: hoganUtils.template(iconsBaseTemplatesPath, renderUtils.getFileIcon(file)),\n });\n })\n .join('\\n');\n return hoganUtils.render(baseTemplatesPath, 'wrapper', {\n filesNumber: diffFiles.length,\n files: files,\n });\n}\nexports.render = render;\n//# sourceMappingURL=file-list-renderer.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Hogan = __importStar(require(\"hogan.js\"));\nvar diff2html_templates_1 = require(\"./diff2html-templates\");\nvar HoganJsUtils = (function () {\n function HoganJsUtils(_a) {\n var _b = _a.compiledTemplates, compiledTemplates = _b === void 0 ? {} : _b, _c = _a.rawTemplates, rawTemplates = _c === void 0 ? {} : _c;\n var compiledRawTemplates = Object.entries(rawTemplates).reduce(function (previousTemplates, _a) {\n var _b;\n var name = _a[0], templateString = _a[1];\n var compiledTemplate = Hogan.compile(templateString, { asString: false });\n return __assign(__assign({}, previousTemplates), (_b = {}, _b[name] = compiledTemplate, _b));\n }, {});\n this.preCompiledTemplates = __assign(__assign(__assign({}, diff2html_templates_1.defaultTemplates), compiledTemplates), compiledRawTemplates);\n }\n HoganJsUtils.compile = function (templateString) {\n return Hogan.compile(templateString, { asString: false });\n };\n HoganJsUtils.prototype.render = function (namespace, view, params, partials, indent) {\n var templateKey = this.templateKey(namespace, view);\n try {\n var template = this.preCompiledTemplates[templateKey];\n return template.render(params, partials, indent);\n }\n catch (e) {\n throw new Error(\"Could not find template to render '\".concat(templateKey, \"'\"));\n }\n };\n HoganJsUtils.prototype.template = function (namespace, view) {\n return this.preCompiledTemplates[this.templateKey(namespace, view)];\n };\n HoganJsUtils.prototype.templateKey = function (namespace, view) {\n return \"\".concat(namespace, \"-\").concat(view);\n };\n return HoganJsUtils;\n}());\nexports.default = HoganJsUtils;\n//# sourceMappingURL=hoganjs-utils.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultLineByLineRendererConfig = void 0;\nvar Rematch = __importStar(require(\"./rematch\"));\nvar renderUtils = __importStar(require(\"./render-utils\"));\nvar types_1 = require(\"./types\");\nexports.defaultLineByLineRendererConfig = __assign(__assign({}, renderUtils.defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });\nvar genericTemplatesPath = 'generic';\nvar baseTemplatesPath = 'line-by-line';\nvar iconsBaseTemplatesPath = 'icon';\nvar tagsBaseTemplatesPath = 'tag';\nvar LineByLineRenderer = (function () {\n function LineByLineRenderer(hoganUtils, config) {\n if (config === void 0) { config = {}; }\n this.hoganUtils = hoganUtils;\n this.config = __assign(__assign({}, exports.defaultLineByLineRendererConfig), config);\n }\n LineByLineRenderer.prototype.render = function (diffFiles) {\n var _this = this;\n var diffsHtml = diffFiles\n .map(function (file) {\n var diffs;\n if (file.blocks.length) {\n diffs = _this.generateFileHtml(file);\n }\n else {\n diffs = _this.generateEmptyDiff();\n }\n return _this.makeFileDiffHtml(file, diffs);\n })\n .join('\\n');\n return this.hoganUtils.render(genericTemplatesPath, 'wrapper', { content: diffsHtml });\n };\n LineByLineRenderer.prototype.makeFileDiffHtml = function (file, diffs) {\n if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)\n return '';\n var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath, 'file-diff');\n var filePathTemplate = this.hoganUtils.template(genericTemplatesPath, 'file-path');\n var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath, 'file');\n var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, renderUtils.getFileIcon(file));\n return fileDiffTemplate.render({\n file: file,\n fileHtmlId: renderUtils.getHtmlId(file),\n diffs: diffs,\n filePath: filePathTemplate.render({\n fileDiffName: renderUtils.filenameDiff(file),\n }, {\n fileIcon: fileIconTemplate,\n fileTag: fileTagTemplate,\n }),\n });\n };\n LineByLineRenderer.prototype.generateEmptyDiff = function () {\n return this.hoganUtils.render(genericTemplatesPath, 'empty-diff', {\n contentClass: 'd2h-code-line',\n CSSLineClass: renderUtils.CSSLineClass,\n });\n };\n LineByLineRenderer.prototype.generateFileHtml = function (file) {\n var _this = this;\n var matcher = Rematch.newMatcherFn(Rematch.newDistanceFn(function (e) { return renderUtils.deconstructLine(e.content, file.isCombined).content; }));\n return file.blocks\n .map(function (block) {\n var lines = _this.hoganUtils.render(genericTemplatesPath, 'block-header', {\n CSSLineClass: renderUtils.CSSLineClass,\n blockHeader: file.isTooBig ? block.header : renderUtils.escapeForHtml(block.header),\n lineClass: 'd2h-code-linenumber',\n contentClass: 'd2h-code-line',\n });\n _this.applyLineGroupping(block).forEach(function (_a) {\n var contextLines = _a[0], oldLines = _a[1], newLines = _a[2];\n if (oldLines.length && newLines.length && !contextLines.length) {\n _this.applyRematchMatching(oldLines, newLines, matcher).map(function (_a) {\n var oldLines = _a[0], newLines = _a[1];\n var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;\n lines += left;\n lines += right;\n });\n }\n else if (contextLines.length) {\n contextLines.forEach(function (line) {\n var _a = renderUtils.deconstructLine(line.content, file.isCombined), prefix = _a.prefix, content = _a.content;\n lines += _this.generateSingleLineHtml({\n type: renderUtils.CSSLineClass.CONTEXT,\n prefix: prefix,\n content: content,\n oldNumber: line.oldNumber,\n newNumber: line.newNumber,\n });\n });\n }\n else if (oldLines.length || newLines.length) {\n var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;\n lines += left;\n lines += right;\n }\n else {\n console.error('Unknown state reached while processing groups of lines', contextLines, oldLines, newLines);\n }\n });\n return lines;\n })\n .join('\\n');\n };\n LineByLineRenderer.prototype.applyLineGroupping = function (block) {\n var blockLinesGroups = [];\n var oldLines = [];\n var newLines = [];\n for (var i = 0; i < block.lines.length; i++) {\n var diffLine = block.lines[i];\n if ((diffLine.type !== types_1.LineType.INSERT && newLines.length) ||\n (diffLine.type === types_1.LineType.CONTEXT && oldLines.length > 0)) {\n blockLinesGroups.push([[], oldLines, newLines]);\n oldLines = [];\n newLines = [];\n }\n if (diffLine.type === types_1.LineType.CONTEXT) {\n blockLinesGroups.push([[diffLine], [], []]);\n }\n else if (diffLine.type === types_1.LineType.INSERT && oldLines.length === 0) {\n blockLinesGroups.push([[], [], [diffLine]]);\n }\n else if (diffLine.type === types_1.LineType.INSERT && oldLines.length > 0) {\n newLines.push(diffLine);\n }\n else if (diffLine.type === types_1.LineType.DELETE) {\n oldLines.push(diffLine);\n }\n }\n if (oldLines.length || newLines.length) {\n blockLinesGroups.push([[], oldLines, newLines]);\n oldLines = [];\n newLines = [];\n }\n return blockLinesGroups;\n };\n LineByLineRenderer.prototype.applyRematchMatching = function (oldLines, newLines, matcher) {\n var comparisons = oldLines.length * newLines.length;\n var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function (elem) { return elem.content.length; })));\n var doMatching = comparisons < this.config.matchingMaxComparisons &&\n maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison &&\n (this.config.matching === 'lines' || this.config.matching === 'words');\n return doMatching ? matcher(oldLines, newLines) : [[oldLines, newLines]];\n };\n LineByLineRenderer.prototype.processChangedLines = function (isCombined, oldLines, newLines) {\n var fileHtml = {\n right: '',\n left: '',\n };\n var maxLinesNumber = Math.max(oldLines.length, newLines.length);\n for (var i = 0; i < maxLinesNumber; i++) {\n var oldLine = oldLines[i];\n var newLine = newLines[i];\n var diff = oldLine !== undefined && newLine !== undefined\n ? renderUtils.diffHighlight(oldLine.content, newLine.content, isCombined, this.config)\n : undefined;\n var preparedOldLine = oldLine !== undefined && oldLine.oldNumber !== undefined\n ? __assign(__assign({}, (diff !== undefined\n ? {\n prefix: diff.oldLine.prefix,\n content: diff.oldLine.content,\n type: renderUtils.CSSLineClass.DELETE_CHANGES,\n }\n : __assign(__assign({}, renderUtils.deconstructLine(oldLine.content, isCombined)), { type: renderUtils.toCSSClass(oldLine.type) }))), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : undefined;\n var preparedNewLine = newLine !== undefined && newLine.newNumber !== undefined\n ? __assign(__assign({}, (diff !== undefined\n ? {\n prefix: diff.newLine.prefix,\n content: diff.newLine.content,\n type: renderUtils.CSSLineClass.INSERT_CHANGES,\n }\n : __assign(__assign({}, renderUtils.deconstructLine(newLine.content, isCombined)), { type: renderUtils.toCSSClass(newLine.type) }))), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : undefined;\n var _a = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a.left, right = _a.right;\n fileHtml.left += left;\n fileHtml.right += right;\n }\n return fileHtml;\n };\n LineByLineRenderer.prototype.generateLineHtml = function (oldLine, newLine) {\n return {\n left: this.generateSingleLineHtml(oldLine),\n right: this.generateSingleLineHtml(newLine),\n };\n };\n LineByLineRenderer.prototype.generateSingleLineHtml = function (line) {\n if (line === undefined)\n return '';\n var lineNumberHtml = this.hoganUtils.render(baseTemplatesPath, 'numbers', {\n oldNumber: line.oldNumber || '',\n newNumber: line.newNumber || '',\n });\n return this.hoganUtils.render(genericTemplatesPath, 'line', {\n type: line.type,\n lineClass: 'd2h-code-linenumber',\n contentClass: 'd2h-code-line',\n prefix: line.prefix === ' ' ? ' ' : line.prefix,\n content: line.content,\n lineNumber: lineNumberHtml,\n });\n };\n return LineByLineRenderer;\n}());\nexports.default = LineByLineRenderer;\n//# sourceMappingURL=line-by-line-renderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.newMatcherFn = exports.newDistanceFn = exports.levenshtein = void 0;\nfunction levenshtein(a, b) {\n if (a.length === 0) {\n return b.length;\n }\n if (b.length === 0) {\n return a.length;\n }\n var matrix = [];\n var i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n var j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n }\n else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));\n }\n }\n }\n return matrix[b.length][a.length];\n}\nexports.levenshtein = levenshtein;\nfunction newDistanceFn(str) {\n return function (x, y) {\n var xValue = str(x).trim();\n var yValue = str(y).trim();\n var lev = levenshtein(xValue, yValue);\n return lev / (xValue.length + yValue.length);\n };\n}\nexports.newDistanceFn = newDistanceFn;\nfunction newMatcherFn(distance) {\n function findBestMatch(a, b, cache) {\n if (cache === void 0) { cache = new Map(); }\n var bestMatchDist = Infinity;\n var bestMatch;\n for (var i = 0; i < a.length; ++i) {\n for (var j = 0; j < b.length; ++j) {\n var cacheKey = JSON.stringify([a[i], b[j]]);\n var md = void 0;\n if (!(cache.has(cacheKey) && (md = cache.get(cacheKey)))) {\n md = distance(a[i], b[j]);\n cache.set(cacheKey, md);\n }\n if (md < bestMatchDist) {\n bestMatchDist = md;\n bestMatch = { indexA: i, indexB: j, score: bestMatchDist };\n }\n }\n }\n return bestMatch;\n }\n function group(a, b, level, cache) {\n if (level === void 0) { level = 0; }\n if (cache === void 0) { cache = new Map(); }\n var bm = findBestMatch(a, b, cache);\n if (!bm || a.length + b.length < 3) {\n return [[a, b]];\n }\n var a1 = a.slice(0, bm.indexA);\n var b1 = b.slice(0, bm.indexB);\n var aMatch = [a[bm.indexA]];\n var bMatch = [b[bm.indexB]];\n var tailA = bm.indexA + 1;\n var tailB = bm.indexB + 1;\n var a2 = a.slice(tailA);\n var b2 = b.slice(tailB);\n var group1 = group(a1, b1, level + 1, cache);\n var groupMatch = group(aMatch, bMatch, level + 1, cache);\n var group2 = group(a2, b2, level + 1, cache);\n var result = groupMatch;\n if (bm.indexA > 0 || bm.indexB > 0) {\n result = group1.concat(result);\n }\n if (a.length > tailA || b.length > tailB) {\n result = result.concat(group2);\n }\n return result;\n }\n return group;\n}\nexports.newMatcherFn = newMatcherFn;\n//# sourceMappingURL=rematch.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffHighlight = exports.getFileIcon = exports.getHtmlId = exports.filenameDiff = exports.deconstructLine = exports.escapeForHtml = exports.toCSSClass = exports.defaultRenderConfig = exports.CSSLineClass = void 0;\nvar jsDiff = __importStar(require(\"diff\"));\nvar utils_1 = require(\"./utils\");\nvar rematch = __importStar(require(\"./rematch\"));\nvar types_1 = require(\"./types\");\nexports.CSSLineClass = {\n INSERTS: 'd2h-ins',\n DELETES: 'd2h-del',\n CONTEXT: 'd2h-cntx',\n INFO: 'd2h-info',\n INSERT_CHANGES: 'd2h-ins d2h-change',\n DELETE_CHANGES: 'd2h-del d2h-change',\n};\nexports.defaultRenderConfig = {\n matching: types_1.LineMatchingType.NONE,\n matchWordsThreshold: 0.25,\n maxLineLengthHighlight: 10000,\n diffStyle: types_1.DiffStyleType.WORD,\n};\nvar separator = '/';\nvar distance = rematch.newDistanceFn(function (change) { return change.value; });\nvar matcher = rematch.newMatcherFn(distance);\nfunction isDevNullName(name) {\n return name.indexOf('dev/null') !== -1;\n}\nfunction removeInsElements(line) {\n return line.replace(/(]*>((.|\\n)*?)<\\/ins>)/g, '');\n}\nfunction removeDelElements(line) {\n return line.replace(/(]*>((.|\\n)*?)<\\/del>)/g, '');\n}\nfunction toCSSClass(lineType) {\n switch (lineType) {\n case types_1.LineType.CONTEXT:\n return exports.CSSLineClass.CONTEXT;\n case types_1.LineType.INSERT:\n return exports.CSSLineClass.INSERTS;\n case types_1.LineType.DELETE:\n return exports.CSSLineClass.DELETES;\n }\n}\nexports.toCSSClass = toCSSClass;\nfunction prefixLength(isCombined) {\n return isCombined ? 2 : 1;\n}\nfunction escapeForHtml(str) {\n return str\n .slice(0)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\nexports.escapeForHtml = escapeForHtml;\nfunction deconstructLine(line, isCombined, escape) {\n if (escape === void 0) { escape = true; }\n var indexToSplit = prefixLength(isCombined);\n return {\n prefix: line.substring(0, indexToSplit),\n content: escape ? escapeForHtml(line.substring(indexToSplit)) : line.substring(indexToSplit),\n };\n}\nexports.deconstructLine = deconstructLine;\nfunction filenameDiff(file) {\n var oldFilename = (0, utils_1.unifyPath)(file.oldName);\n var newFilename = (0, utils_1.unifyPath)(file.newName);\n if (oldFilename !== newFilename && !isDevNullName(oldFilename) && !isDevNullName(newFilename)) {\n var prefixPaths = [];\n var suffixPaths = [];\n var oldFilenameParts = oldFilename.split(separator);\n var newFilenameParts = newFilename.split(separator);\n var oldFilenamePartsSize = oldFilenameParts.length;\n var newFilenamePartsSize = newFilenameParts.length;\n var i = 0;\n var j = oldFilenamePartsSize - 1;\n var k = newFilenamePartsSize - 1;\n while (i < j && i < k) {\n if (oldFilenameParts[i] === newFilenameParts[i]) {\n prefixPaths.push(newFilenameParts[i]);\n i += 1;\n }\n else {\n break;\n }\n }\n while (j > i && k > i) {\n if (oldFilenameParts[j] === newFilenameParts[k]) {\n suffixPaths.unshift(newFilenameParts[k]);\n j -= 1;\n k -= 1;\n }\n else {\n break;\n }\n }\n var finalPrefix = prefixPaths.join(separator);\n var finalSuffix = suffixPaths.join(separator);\n var oldRemainingPath = oldFilenameParts.slice(i, j + 1).join(separator);\n var newRemainingPath = newFilenameParts.slice(i, k + 1).join(separator);\n if (finalPrefix.length && finalSuffix.length) {\n return (finalPrefix + separator + '{' + oldRemainingPath + ' → ' + newRemainingPath + '}' + separator + finalSuffix);\n }\n else if (finalPrefix.length) {\n return finalPrefix + separator + '{' + oldRemainingPath + ' → ' + newRemainingPath + '}';\n }\n else if (finalSuffix.length) {\n return '{' + oldRemainingPath + ' → ' + newRemainingPath + '}' + separator + finalSuffix;\n }\n return oldFilename + ' → ' + newFilename;\n }\n else if (!isDevNullName(newFilename)) {\n return newFilename;\n }\n else {\n return oldFilename;\n }\n}\nexports.filenameDiff = filenameDiff;\nfunction getHtmlId(file) {\n return \"d2h-\".concat((0, utils_1.hashCode)(filenameDiff(file)).toString().slice(-6));\n}\nexports.getHtmlId = getHtmlId;\nfunction getFileIcon(file) {\n var templateName = 'file-changed';\n if (file.isRename) {\n templateName = 'file-renamed';\n }\n else if (file.isCopy) {\n templateName = 'file-renamed';\n }\n else if (file.isNew) {\n templateName = 'file-added';\n }\n else if (file.isDeleted) {\n templateName = 'file-deleted';\n }\n else if (file.newName !== file.oldName) {\n templateName = 'file-renamed';\n }\n return templateName;\n}\nexports.getFileIcon = getFileIcon;\nfunction diffHighlight(diffLine1, diffLine2, isCombined, config) {\n if (config === void 0) { config = {}; }\n var _a = __assign(__assign({}, exports.defaultRenderConfig), config), matching = _a.matching, maxLineLengthHighlight = _a.maxLineLengthHighlight, matchWordsThreshold = _a.matchWordsThreshold, diffStyle = _a.diffStyle;\n var line1 = deconstructLine(diffLine1, isCombined, false);\n var line2 = deconstructLine(diffLine2, isCombined, false);\n if (line1.content.length > maxLineLengthHighlight || line2.content.length > maxLineLengthHighlight) {\n return {\n oldLine: {\n prefix: line1.prefix,\n content: escapeForHtml(line1.content),\n },\n newLine: {\n prefix: line2.prefix,\n content: escapeForHtml(line2.content),\n },\n };\n }\n var diff = diffStyle === 'char'\n ? jsDiff.diffChars(line1.content, line2.content)\n : jsDiff.diffWordsWithSpace(line1.content, line2.content);\n var changedWords = [];\n if (diffStyle === 'word' && matching === 'words') {\n var removed = diff.filter(function (element) { return element.removed; });\n var added = diff.filter(function (element) { return element.added; });\n var chunks = matcher(added, removed);\n chunks.forEach(function (chunk) {\n if (chunk[0].length === 1 && chunk[1].length === 1) {\n var dist = distance(chunk[0][0], chunk[1][0]);\n if (dist < matchWordsThreshold) {\n changedWords.push(chunk[0][0]);\n changedWords.push(chunk[1][0]);\n }\n }\n });\n }\n var highlightedLine = diff.reduce(function (highlightedLine, part) {\n var elemType = part.added ? 'ins' : part.removed ? 'del' : null;\n var addClass = changedWords.indexOf(part) > -1 ? ' class=\"d2h-change\"' : '';\n var escapedValue = escapeForHtml(part.value);\n return elemType !== null\n ? \"\".concat(highlightedLine, \"<\").concat(elemType).concat(addClass, \">\").concat(escapedValue, \"\").concat(elemType, \">\")\n : \"\".concat(highlightedLine).concat(escapedValue);\n }, '');\n return {\n oldLine: {\n prefix: line1.prefix,\n content: removeInsElements(highlightedLine),\n },\n newLine: {\n prefix: line2.prefix,\n content: removeDelElements(highlightedLine),\n },\n };\n}\nexports.diffHighlight = diffHighlight;\n//# sourceMappingURL=render-utils.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultSideBySideRendererConfig = void 0;\nvar Rematch = __importStar(require(\"./rematch\"));\nvar renderUtils = __importStar(require(\"./render-utils\"));\nvar types_1 = require(\"./types\");\nexports.defaultSideBySideRendererConfig = __assign(__assign({}, renderUtils.defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });\nvar genericTemplatesPath = 'generic';\nvar baseTemplatesPath = 'side-by-side';\nvar iconsBaseTemplatesPath = 'icon';\nvar tagsBaseTemplatesPath = 'tag';\nvar SideBySideRenderer = (function () {\n function SideBySideRenderer(hoganUtils, config) {\n if (config === void 0) { config = {}; }\n this.hoganUtils = hoganUtils;\n this.config = __assign(__assign({}, exports.defaultSideBySideRendererConfig), config);\n }\n SideBySideRenderer.prototype.render = function (diffFiles) {\n var _this = this;\n var diffsHtml = diffFiles\n .map(function (file) {\n var diffs;\n if (file.blocks.length) {\n diffs = _this.generateFileHtml(file);\n }\n else {\n diffs = _this.generateEmptyDiff();\n }\n return _this.makeFileDiffHtml(file, diffs);\n })\n .join('\\n');\n return this.hoganUtils.render(genericTemplatesPath, 'wrapper', { content: diffsHtml });\n };\n SideBySideRenderer.prototype.makeFileDiffHtml = function (file, diffs) {\n if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)\n return '';\n var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath, 'file-diff');\n var filePathTemplate = this.hoganUtils.template(genericTemplatesPath, 'file-path');\n var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath, 'file');\n var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, renderUtils.getFileIcon(file));\n return fileDiffTemplate.render({\n file: file,\n fileHtmlId: renderUtils.getHtmlId(file),\n diffs: diffs,\n filePath: filePathTemplate.render({\n fileDiffName: renderUtils.filenameDiff(file),\n }, {\n fileIcon: fileIconTemplate,\n fileTag: fileTagTemplate,\n }),\n });\n };\n SideBySideRenderer.prototype.generateEmptyDiff = function () {\n return {\n right: '',\n left: this.hoganUtils.render(genericTemplatesPath, 'empty-diff', {\n contentClass: 'd2h-code-side-line',\n CSSLineClass: renderUtils.CSSLineClass,\n }),\n };\n };\n SideBySideRenderer.prototype.generateFileHtml = function (file) {\n var _this = this;\n var matcher = Rematch.newMatcherFn(Rematch.newDistanceFn(function (e) { return renderUtils.deconstructLine(e.content, file.isCombined).content; }));\n return file.blocks\n .map(function (block) {\n var fileHtml = {\n left: _this.makeHeaderHtml(block.header, file),\n right: _this.makeHeaderHtml(''),\n };\n _this.applyLineGroupping(block).forEach(function (_a) {\n var contextLines = _a[0], oldLines = _a[1], newLines = _a[2];\n if (oldLines.length && newLines.length && !contextLines.length) {\n _this.applyRematchMatching(oldLines, newLines, matcher).map(function (_a) {\n var oldLines = _a[0], newLines = _a[1];\n var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;\n fileHtml.left += left;\n fileHtml.right += right;\n });\n }\n else if (contextLines.length) {\n contextLines.forEach(function (line) {\n var _a = renderUtils.deconstructLine(line.content, file.isCombined), prefix = _a.prefix, content = _a.content;\n var _b = _this.generateLineHtml({\n type: renderUtils.CSSLineClass.CONTEXT,\n prefix: prefix,\n content: content,\n number: line.oldNumber,\n }, {\n type: renderUtils.CSSLineClass.CONTEXT,\n prefix: prefix,\n content: content,\n number: line.newNumber,\n }), left = _b.left, right = _b.right;\n fileHtml.left += left;\n fileHtml.right += right;\n });\n }\n else if (oldLines.length || newLines.length) {\n var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;\n fileHtml.left += left;\n fileHtml.right += right;\n }\n else {\n console.error('Unknown state reached while processing groups of lines', contextLines, oldLines, newLines);\n }\n });\n return fileHtml;\n })\n .reduce(function (accomulated, html) {\n return { left: accomulated.left + html.left, right: accomulated.right + html.right };\n }, { left: '', right: '' });\n };\n SideBySideRenderer.prototype.applyLineGroupping = function (block) {\n var blockLinesGroups = [];\n var oldLines = [];\n var newLines = [];\n for (var i = 0; i < block.lines.length; i++) {\n var diffLine = block.lines[i];\n if ((diffLine.type !== types_1.LineType.INSERT && newLines.length) ||\n (diffLine.type === types_1.LineType.CONTEXT && oldLines.length > 0)) {\n blockLinesGroups.push([[], oldLines, newLines]);\n oldLines = [];\n newLines = [];\n }\n if (diffLine.type === types_1.LineType.CONTEXT) {\n blockLinesGroups.push([[diffLine], [], []]);\n }\n else if (diffLine.type === types_1.LineType.INSERT && oldLines.length === 0) {\n blockLinesGroups.push([[], [], [diffLine]]);\n }\n else if (diffLine.type === types_1.LineType.INSERT && oldLines.length > 0) {\n newLines.push(diffLine);\n }\n else if (diffLine.type === types_1.LineType.DELETE) {\n oldLines.push(diffLine);\n }\n }\n if (oldLines.length || newLines.length) {\n blockLinesGroups.push([[], oldLines, newLines]);\n oldLines = [];\n newLines = [];\n }\n return blockLinesGroups;\n };\n SideBySideRenderer.prototype.applyRematchMatching = function (oldLines, newLines, matcher) {\n var comparisons = oldLines.length * newLines.length;\n var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function (elem) { return elem.content.length; })));\n var doMatching = comparisons < this.config.matchingMaxComparisons &&\n maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison &&\n (this.config.matching === 'lines' || this.config.matching === 'words');\n return doMatching ? matcher(oldLines, newLines) : [[oldLines, newLines]];\n };\n SideBySideRenderer.prototype.makeHeaderHtml = function (blockHeader, file) {\n return this.hoganUtils.render(genericTemplatesPath, 'block-header', {\n CSSLineClass: renderUtils.CSSLineClass,\n blockHeader: (file === null || file === void 0 ? void 0 : file.isTooBig) ? blockHeader : renderUtils.escapeForHtml(blockHeader),\n lineClass: 'd2h-code-side-linenumber',\n contentClass: 'd2h-code-side-line',\n });\n };\n SideBySideRenderer.prototype.processChangedLines = function (isCombined, oldLines, newLines) {\n var fileHtml = {\n right: '',\n left: '',\n };\n var maxLinesNumber = Math.max(oldLines.length, newLines.length);\n for (var i = 0; i < maxLinesNumber; i++) {\n var oldLine = oldLines[i];\n var newLine = newLines[i];\n var diff = oldLine !== undefined && newLine !== undefined\n ? renderUtils.diffHighlight(oldLine.content, newLine.content, isCombined, this.config)\n : undefined;\n var preparedOldLine = oldLine !== undefined && oldLine.oldNumber !== undefined\n ? __assign(__assign({}, (diff !== undefined\n ? {\n prefix: diff.oldLine.prefix,\n content: diff.oldLine.content,\n type: renderUtils.CSSLineClass.DELETE_CHANGES,\n }\n : __assign(__assign({}, renderUtils.deconstructLine(oldLine.content, isCombined)), { type: renderUtils.toCSSClass(oldLine.type) }))), { number: oldLine.oldNumber }) : undefined;\n var preparedNewLine = newLine !== undefined && newLine.newNumber !== undefined\n ? __assign(__assign({}, (diff !== undefined\n ? {\n prefix: diff.newLine.prefix,\n content: diff.newLine.content,\n type: renderUtils.CSSLineClass.INSERT_CHANGES,\n }\n : __assign(__assign({}, renderUtils.deconstructLine(newLine.content, isCombined)), { type: renderUtils.toCSSClass(newLine.type) }))), { number: newLine.newNumber }) : undefined;\n var _a = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a.left, right = _a.right;\n fileHtml.left += left;\n fileHtml.right += right;\n }\n return fileHtml;\n };\n SideBySideRenderer.prototype.generateLineHtml = function (oldLine, newLine) {\n return {\n left: this.generateSingleHtml(oldLine),\n right: this.generateSingleHtml(newLine),\n };\n };\n SideBySideRenderer.prototype.generateSingleHtml = function (line) {\n var lineClass = 'd2h-code-side-linenumber';\n var contentClass = 'd2h-code-side-line';\n return this.hoganUtils.render(genericTemplatesPath, 'line', {\n type: (line === null || line === void 0 ? void 0 : line.type) || \"\".concat(renderUtils.CSSLineClass.CONTEXT, \" d2h-emptyplaceholder\"),\n lineClass: line !== undefined ? lineClass : \"\".concat(lineClass, \" d2h-code-side-emptyplaceholder\"),\n contentClass: line !== undefined ? contentClass : \"\".concat(contentClass, \" d2h-code-side-emptyplaceholder\"),\n prefix: (line === null || line === void 0 ? void 0 : line.prefix) === ' ' ? ' ' : line === null || line === void 0 ? void 0 : line.prefix,\n content: line === null || line === void 0 ? void 0 : line.content,\n lineNumber: line === null || line === void 0 ? void 0 : line.number,\n });\n };\n return SideBySideRenderer;\n}());\nexports.default = SideBySideRenderer;\n//# sourceMappingURL=side-by-side-renderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiffStyleType = exports.LineMatchingType = exports.OutputFormatType = exports.LineType = void 0;\nvar LineType;\n(function (LineType) {\n LineType[\"INSERT\"] = \"insert\";\n LineType[\"DELETE\"] = \"delete\";\n LineType[\"CONTEXT\"] = \"context\";\n})(LineType = exports.LineType || (exports.LineType = {}));\nexports.OutputFormatType = {\n LINE_BY_LINE: 'line-by-line',\n SIDE_BY_SIDE: 'side-by-side',\n};\nexports.LineMatchingType = {\n LINES: 'lines',\n WORDS: 'words',\n NONE: 'none',\n};\nexports.DiffStyleType = {\n WORD: 'word',\n CHAR: 'char',\n};\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Diff2HtmlUI = exports.defaultDiff2HtmlUIConfig = void 0;\nvar highlight_js_helpers_1 = require(\"./highlight.js-helpers\");\nvar diff2html_1 = require(\"../../diff2html\");\nexports.defaultDiff2HtmlUIConfig = __assign(__assign({}, diff2html_1.defaultDiff2HtmlConfig), { synchronisedScroll: true, highlight: true, fileListToggle: true, fileListStartVisible: false, highlightLanguages: new Map(), smartSelection: true, fileContentToggle: true, stickyFileHeaders: true });\nvar Diff2HtmlUI = (function () {\n function Diff2HtmlUI(target, diffInput, config, hljs) {\n if (config === void 0) { config = {}; }\n this.hljs = null;\n this.currentSelectionColumnId = -1;\n this.config = __assign(__assign({}, exports.defaultDiff2HtmlUIConfig), config);\n this.diffHtml = diffInput !== undefined ? (0, diff2html_1.html)(diffInput, this.config) : target.innerHTML;\n this.targetElement = target;\n if (hljs !== undefined)\n this.hljs = hljs;\n }\n Diff2HtmlUI.prototype.draw = function () {\n this.targetElement.innerHTML = this.diffHtml;\n if (this.config.synchronisedScroll)\n this.synchronisedScroll();\n if (this.config.highlight)\n this.highlightCode();\n if (this.config.fileListToggle)\n this.fileListToggle(this.config.fileListStartVisible);\n if (this.config.fileContentToggle)\n this.fileContentToggle();\n if (this.config.stickyFileHeaders)\n this.stickyFileHeaders();\n };\n Diff2HtmlUI.prototype.synchronisedScroll = function () {\n this.targetElement.querySelectorAll('.d2h-file-wrapper').forEach(function (wrapper) {\n var _a = Array().slice.call(wrapper.querySelectorAll('.d2h-file-side-diff')), left = _a[0], right = _a[1];\n if (left === undefined || right === undefined)\n return;\n var onScroll = function (event) {\n if (event === null || event.target === null)\n return;\n if (event.target === left) {\n right.scrollTop = left.scrollTop;\n right.scrollLeft = left.scrollLeft;\n }\n else {\n left.scrollTop = right.scrollTop;\n left.scrollLeft = right.scrollLeft;\n }\n };\n left.addEventListener('scroll', onScroll);\n right.addEventListener('scroll', onScroll);\n });\n };\n Diff2HtmlUI.prototype.fileListToggle = function (startVisible) {\n var showBtn = this.targetElement.querySelector('.d2h-show');\n var hideBtn = this.targetElement.querySelector('.d2h-hide');\n var fileList = this.targetElement.querySelector('.d2h-file-list');\n if (showBtn === null || hideBtn === null || fileList === null)\n return;\n var show = function () {\n showBtn.style.display = 'none';\n hideBtn.style.display = 'inline';\n fileList.style.display = 'block';\n };\n var hide = function () {\n showBtn.style.display = 'inline';\n hideBtn.style.display = 'none';\n fileList.style.display = 'none';\n };\n showBtn.addEventListener('click', function () { return show(); });\n hideBtn.addEventListener('click', function () { return hide(); });\n var hashTag = this.getHashTag();\n if (hashTag === 'files-summary-show')\n show();\n else if (hashTag === 'files-summary-hide')\n hide();\n else if (startVisible)\n show();\n else\n hide();\n };\n Diff2HtmlUI.prototype.fileContentToggle = function () {\n this.targetElement.querySelectorAll('.d2h-file-collapse').forEach(function (fileContentToggleBtn) {\n fileContentToggleBtn.style.display = 'flex';\n var toggleFileContents = function (selector) {\n var _a;\n var fileContents = (_a = fileContentToggleBtn\n .closest('.d2h-file-wrapper')) === null || _a === void 0 ? void 0 : _a.querySelector(selector);\n if (fileContents !== null && fileContents !== undefined) {\n fileContentToggleBtn.classList.toggle('d2h-selected');\n fileContents.classList.toggle('d2h-d-none');\n }\n };\n var toggleHandler = function (e) {\n if (fileContentToggleBtn === e.target)\n return;\n toggleFileContents('.d2h-file-diff');\n toggleFileContents('.d2h-files-diff');\n };\n fileContentToggleBtn.addEventListener('click', function (e) { return toggleHandler(e); });\n });\n };\n Diff2HtmlUI.prototype.highlightCode = function () {\n var _this = this;\n var hljs = this.hljs;\n if (hljs === null) {\n throw new Error('Missing a `highlight.js` implementation. Please provide one when instantiating Diff2HtmlUI.');\n }\n var files = this.targetElement.querySelectorAll('.d2h-file-wrapper');\n files.forEach(function (file) {\n var language = file.getAttribute('data-lang');\n if (!(_this.config.highlightLanguages instanceof Map)) {\n _this.config.highlightLanguages = new Map(Object.entries(_this.config.highlightLanguages));\n }\n var hljsLanguage = language && _this.config.highlightLanguages.has(language)\n ?\n _this.config.highlightLanguages.get(language)\n : language\n ? (0, highlight_js_helpers_1.getLanguage)(language)\n : 'plaintext';\n var codeLines = file.querySelectorAll('.d2h-code-line-ctn');\n codeLines.forEach(function (line) {\n var text = line.textContent;\n var lineParent = line.parentNode;\n if (text === null || lineParent === null || !_this.isElement(lineParent))\n return;\n var result = (0, highlight_js_helpers_1.closeTags)(hljs.highlight(text, {\n language: hljsLanguage,\n ignoreIllegals: true,\n }));\n var originalStream = (0, highlight_js_helpers_1.nodeStream)(line);\n if (originalStream.length) {\n var resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n resultNode.innerHTML = result.value;\n result.value = (0, highlight_js_helpers_1.mergeStreams)(originalStream, (0, highlight_js_helpers_1.nodeStream)(resultNode), text);\n }\n line.classList.add('hljs');\n if (result.language) {\n line.classList.add(result.language);\n }\n line.innerHTML = result.value;\n });\n });\n };\n Diff2HtmlUI.prototype.stickyFileHeaders = function () {\n this.targetElement.querySelectorAll('.d2h-file-header').forEach(function (header) {\n header.classList.add('d2h-sticky-header');\n });\n };\n Diff2HtmlUI.prototype.smartSelection = function () {\n console.warn('Smart selection is now enabled by default with CSS. No need to call this method anymore.');\n };\n Diff2HtmlUI.prototype.getHashTag = function () {\n var docUrl = document.URL;\n var hashTagIndex = docUrl.indexOf('#');\n var hashTag = null;\n if (hashTagIndex !== -1) {\n hashTag = docUrl.substr(hashTagIndex + 1);\n }\n return hashTag;\n };\n Diff2HtmlUI.prototype.isElement = function (arg) {\n return arg !== null && (arg === null || arg === void 0 ? void 0 : arg.classList) !== undefined;\n };\n return Diff2HtmlUI;\n}());\nexports.Diff2HtmlUI = Diff2HtmlUI;\n//# sourceMappingURL=diff2html-ui-base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultDiff2HtmlUIConfig = exports.Diff2HtmlUI = void 0;\nvar highlight_js_slim_1 = require(\"./highlight.js-slim\");\nvar diff2html_ui_base_1 = require(\"./diff2html-ui-base\");\nObject.defineProperty(exports, \"defaultDiff2HtmlUIConfig\", { enumerable: true, get: function () { return diff2html_ui_base_1.defaultDiff2HtmlUIConfig; } });\nvar Diff2HtmlUI = (function (_super) {\n __extends(Diff2HtmlUI, _super);\n function Diff2HtmlUI(target, diffInput, config) {\n if (config === void 0) { config = {}; }\n return _super.call(this, target, diffInput, config, highlight_js_slim_1.hljs) || this;\n }\n return Diff2HtmlUI;\n}(diff2html_ui_base_1.Diff2HtmlUI));\nexports.Diff2HtmlUI = Diff2HtmlUI;\n//# sourceMappingURL=diff2html-ui-slim.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLanguage = exports.closeTags = exports.mergeStreams = exports.nodeStream = void 0;\nfunction escapeHTML(value) {\n return value.replace(/&/gm, '&').replace(//gm, '>');\n}\nfunction tag(node) {\n return node.nodeName.toLowerCase();\n}\nfunction nodeStream(node) {\n var result = [];\n var nodeStream = function (node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3 && child.nodeValue !== null) {\n offset += child.nodeValue.length;\n }\n else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child,\n });\n offset = nodeStream(child, offset);\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child,\n });\n }\n }\n }\n return offset;\n };\n nodeStream(node, 0);\n return result;\n}\nexports.nodeStream = nodeStream;\nfunction mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n function isElement(arg) {\n return arg !== null && (arg === null || arg === void 0 ? void 0 : arg.attributes) !== undefined;\n }\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return original[0].offset < highlighted[0].offset ? original : highlighted;\n }\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n function open(node) {\n if (!isElement(node)) {\n throw new Error('Node is not an Element');\n }\n result += \"<\".concat(tag(node), \" \").concat(Array()\n .map.call(node.attributes, function (attr) { return \"\".concat(attr.nodeName, \"=\\\"\").concat(escapeHTML(attr.value).replace(/\"/g, '"'), \"\\\"\"); })\n .join(' '), \">\");\n }\n function close(node) {\n result += '' + tag(node) + '>';\n }\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n while (original.length || highlighted.length) {\n var stream = selectStream();\n result += escapeHTML(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n }\n else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n }\n else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escapeHTML(value.substr(processed));\n}\nexports.mergeStreams = mergeStreams;\nfunction closeTags(res) {\n var tokenStack = new Array();\n res.value = res.value\n .split('\\n')\n .map(function (line) {\n var prepend = tokenStack.map(function (token) { return \"\"); }).join('');\n var matches = line.matchAll(/(|<\\/span>)/g);\n Array.from(matches).forEach(function (match) {\n if (match[0] === ' ')\n tokenStack.shift();\n else\n tokenStack.unshift(match[2]);\n });\n var append = ' '.repeat(tokenStack.length);\n return prepend + line + append;\n })\n .join('\\n');\n return res;\n}\nexports.closeTags = closeTags;\nvar languagesToExt = {\n '1c': '1c',\n abnf: 'abnf',\n accesslog: 'accesslog',\n as: 'actionscript',\n adb: 'ada',\n ada: 'ada',\n ads: 'ada',\n angelscript: 'angelscript',\n apache: 'apache',\n applescript: 'applescript',\n scpt: 'applescript',\n arcade: 'arcade',\n cpp: 'cpp',\n hpp: 'cpp',\n arduino: 'arduino',\n ino: 'arduino',\n armasm: 'armasm',\n arm: 'armasm',\n xml: 'xml',\n html: 'xml',\n xhtml: 'xml',\n rss: 'xml',\n atom: 'xml',\n xjb: 'xml',\n xsd: 'xml',\n xsl: 'xml',\n plist: 'xml',\n svg: 'xml',\n asciidoc: 'asciidoc',\n adoc: 'asciidoc',\n asc: 'asciidoc',\n aspectj: 'aspectj',\n ahk: 'autohotkey',\n ahkl: 'autohotkey',\n au3: 'autoit',\n avrasm: 'avrasm',\n awk: 'awk',\n axapta: 'axapta',\n 'x++': 'axapta',\n bash: 'bash',\n sh: 'bash',\n zsh: 'bash',\n b: 'basic',\n bnf: 'bnf',\n bf: 'brainfuck',\n c: 'c',\n h: 'c',\n cats: 'c',\n idc: 'c',\n cal: 'cal',\n capnproto: 'capnproto',\n capnp: 'capnproto',\n ceylon: 'ceylon',\n clean: 'clean',\n clj: 'clojure',\n boot: 'clojure',\n cl2: 'clojure',\n cljc: 'clojure',\n cljs: 'clojure',\n 'cljs.hl': 'clojure',\n cljscm: 'clojure',\n cljx: 'clojure',\n hic: 'clojure',\n 'clojure-repl': 'clojure-repl',\n cmake: 'cmake',\n 'cmake.in': 'cmake',\n coffee: 'coffeescript',\n _coffee: 'coffeescript',\n cake: 'coffeescript',\n cjsx: 'coffeescript',\n iced: 'coffeescript',\n cson: 'coffeescript',\n coq: 'coq',\n cos: 'cos',\n cls: 'cos',\n crmsh: 'crmsh',\n crm: 'crmsh',\n pcmk: 'crmsh',\n cr: 'crystal',\n cs: 'csharp',\n csx: 'csharp',\n csp: 'csp',\n css: 'css',\n d: 'd',\n di: 'd',\n md: 'markdown',\n markdown: 'markdown',\n mdown: 'markdown',\n mdwn: 'markdown',\n mkd: 'markdown',\n mkdn: 'markdown',\n mkdown: 'markdown',\n ronn: 'markdown',\n workbook: 'markdown',\n dart: 'dart',\n dpr: 'delphi',\n dfm: 'delphi',\n pas: 'delphi',\n pascal: 'delphi',\n diff: 'diff',\n patch: 'diff',\n django: 'django',\n jinja: 'django',\n dns: 'dns',\n zone: 'dns',\n bind: 'dns',\n dockerfile: 'dockerfile',\n docker: 'dockerfile',\n dos: 'dos',\n bat: 'dos',\n cmd: 'dos',\n dsconfig: 'dsconfig',\n dts: 'dts',\n dust: 'dust',\n dst: 'dust',\n ebnf: 'ebnf',\n ex: 'elixir',\n exs: 'elixir',\n elm: 'elm',\n rb: 'ruby',\n builder: 'ruby',\n eye: 'ruby',\n gemspec: 'ruby',\n god: 'ruby',\n jbuilder: 'ruby',\n mspec: 'ruby',\n pluginspec: 'ruby',\n podspec: 'ruby',\n rabl: 'ruby',\n rake: 'ruby',\n rbuild: 'ruby',\n rbw: 'ruby',\n rbx: 'ruby',\n ru: 'ruby',\n ruby: 'ruby',\n spec: 'ruby',\n thor: 'ruby',\n watchr: 'ruby',\n erb: 'erb',\n 'erlang-repl': 'erlang-repl',\n erl: 'erlang',\n 'app.src': 'erlang',\n escript: 'erlang',\n hrl: 'erlang',\n xrl: 'erlang',\n yrl: 'erlang',\n excel: 'excel',\n xls: 'excel',\n xlsx: 'excel',\n fix: 'fix',\n flix: 'flix',\n f90: 'fortran',\n f: 'fortran',\n f03: 'fortran',\n f08: 'fortran',\n f77: 'fortran',\n f95: 'fortran',\n for: 'fortran',\n fpp: 'fortran',\n fs: 'fsharp',\n fsx: 'fsharp',\n gams: 'gams',\n gms: 'gams',\n gauss: 'gauss',\n gss: 'gauss',\n gcode: 'gcode',\n nc: 'gcode',\n gherkin: 'gherkin',\n glsl: 'glsl',\n fp: 'glsl',\n frag: 'glsl',\n frg: 'glsl',\n fsh: 'glsl',\n fshader: 'glsl',\n geo: 'glsl',\n geom: 'glsl',\n glslv: 'glsl',\n gshader: 'glsl',\n shader: 'glsl',\n tesc: 'glsl',\n tese: 'glsl',\n vert: 'glsl',\n vrx: 'glsl',\n vsh: 'glsl',\n vshader: 'glsl',\n gml: 'gml',\n go: 'go',\n bal: 'go',\n golo: 'golo',\n gololang: 'golo',\n gradle: 'gradle',\n groovy: 'groovy',\n grt: 'groovy',\n gtpl: 'groovy',\n gvy: 'groovy',\n haml: 'haml',\n 'haml.deface': 'haml',\n handlebars: 'handlebars',\n hbs: 'handlebars',\n 'html.hbs': 'handlebars',\n 'html.handlebars': 'handlebars',\n hs: 'haskell',\n hsc: 'haskell',\n idr: 'haskell',\n purs: 'haskell',\n hx: 'haxe',\n hxsl: 'haxe',\n hsp: 'hsp',\n htmlbars: 'htmlbars',\n http: 'http',\n https: 'http',\n hy: 'hy',\n inform7: 'inform7',\n i7: 'inform7',\n ini: 'ini',\n toml: 'ini',\n cfg: 'ini',\n prefs: 'ini',\n irpf90: 'irpf90',\n isbl: 'isbl',\n java: 'java',\n jsp: 'java',\n js: 'javascript',\n jsx: 'javascript',\n _js: 'javascript',\n bones: 'javascript',\n es: 'javascript',\n es6: 'javascript',\n gs: 'javascript',\n jake: 'javascript',\n jsb: 'javascript',\n jscad: 'javascript',\n jsfl: 'javascript',\n jsm: 'javascript',\n jss: 'javascript',\n mjs: 'javascript',\n njs: 'javascript',\n pac: 'javascript',\n sjs: 'javascript',\n ssjs: 'javascript',\n xsjs: 'javascript',\n xsjslib: 'javascript',\n cfc: 'javascript',\n 'jboss-cli': 'jboss-cli',\n json: 'json',\n avsc: 'json',\n geojson: 'json',\n gltf: 'json',\n 'JSON-tmLanguage': 'json',\n jsonl: 'json',\n tfstate: 'json',\n 'tfstate.backup': 'json',\n topojson: 'json',\n webapp: 'json',\n webmanifest: 'json',\n jl: 'julia',\n 'julia-repl': 'julia-repl',\n kt: 'kotlin',\n ktm: 'kotlin',\n kts: 'kotlin',\n lasso: 'lasso',\n lassoscript: 'lasso',\n tex: 'latex',\n ldif: 'ldif',\n leaf: 'leaf',\n less: 'less',\n lisp: 'lisp',\n factor: 'lisp',\n livecodeserver: 'livecodeserver',\n ls: 'livescript',\n _ls: 'livescript',\n llvm: 'llvm',\n lsl: 'lsl',\n lua: 'lua',\n nse: 'lua',\n p8: 'lua',\n pd_lua: 'lua',\n rbxs: 'lua',\n wlua: 'lua',\n mak: 'makefile',\n make: 'makefile',\n mk: 'makefile',\n mkfile: 'makefile',\n mathematica: 'mathematica',\n mma: 'mathematica',\n wl: 'mathematica',\n matlab: 'matlab',\n maxima: 'maxima',\n mel: 'mel',\n mercury: 'mercury',\n mipsasm: 'mipsasm',\n miz: 'mizar',\n voc: 'mizar',\n al: 'perl',\n cgi: 'perl',\n fcgi: 'perl',\n perl: 'perl',\n ph: 'perl',\n plx: 'perl',\n pl: 'perl',\n pm: 'perl',\n psgi: 'perl',\n t: 'perl',\n mojolicious: 'mojolicious',\n monkey: 'monkey',\n monkey2: 'monkey',\n moonscript: 'moonscript',\n moon: 'moonscript',\n n1ql: 'n1ql',\n nginxconf: 'nginx',\n nim: 'nim',\n nimrod: 'nim',\n nix: 'nix',\n nsi: 'nsis',\n nsh: 'nsis',\n m: 'objectivec',\n objc: 'objectivec',\n mm: 'objectivec',\n 'obj-c': 'objectivec',\n 'obj-c++': 'objectivec',\n 'objective-c++': 'objectivec',\n fun: 'ocaml',\n sig: 'ocaml',\n ml: 'ocaml',\n mli: 'ocaml',\n eliom: 'ocaml',\n eliomi: 'ocaml',\n ml4: 'ocaml',\n mll: 'ocaml',\n mly: 'ocaml',\n openscad: 'openscad',\n oxygene: 'oxygene',\n parser3: 'parser3',\n pf: 'pf',\n 'pf.conf': 'pf',\n pgsql: 'pgsql',\n postgres: 'pgsql',\n postgresql: 'pgsql',\n php: 'php',\n aw: 'php',\n ctp: 'php',\n inc: 'php',\n php3: 'php',\n php4: 'php',\n php5: 'php',\n phps: 'php',\n phpt: 'php',\n 'php-template': 'php-template',\n plaintext: 'plaintext',\n txt: 'plaintext',\n text: 'plaintext',\n pony: 'pony',\n ps: 'powershell',\n ps1: 'powershell',\n psd1: 'powershell',\n psm1: 'powershell',\n pde: 'processing',\n profile: 'profile',\n pro: 'prolog',\n prolog: 'prolog',\n yap: 'prolog',\n properties: 'properties',\n proto: 'protobuf',\n puppet: 'puppet',\n pp: 'puppet',\n purebasic: 'purebasic',\n py: 'python',\n bzl: 'python',\n gyp: 'python',\n gypi: 'python',\n lmi: 'python',\n py3: 'python',\n pyde: 'python',\n pyi: 'python',\n pyp: 'python',\n pyt: 'python',\n pyw: 'python',\n rpy: 'python',\n tac: 'python',\n wsgi: 'python',\n xpy: 'python',\n 'python-repl': 'python-repl',\n pycon: 'python-repl',\n q: 'q',\n k: 'q',\n kdb: 'q',\n qml: 'qml',\n r: 'r',\n rd: 'r',\n rsx: 'r',\n reasonml: 'reasonml',\n re: 'reasonml',\n rib: 'rib',\n roboconf: 'roboconf',\n graph: 'roboconf',\n instances: 'roboconf',\n routeros: 'routeros',\n rsl: 'rsl',\n ruleslanguage: 'ruleslanguage',\n rs: 'rust',\n 'rs.in': 'rust',\n sas: 'sas',\n scala: 'scala',\n kojo: 'scala',\n sbt: 'scala',\n sc: 'scala',\n scm: 'scheme',\n sch: 'scheme',\n sld: 'scheme',\n sls: 'scheme',\n sps: 'scheme',\n ss: 'scheme',\n rkt: 'scheme',\n scilab: 'scilab',\n scss: 'scss',\n shell: 'shell',\n smali: 'smali',\n st: 'smalltalk',\n sml: 'sml',\n sqf: 'sqf',\n sql: 'sql',\n cql: 'sql',\n ddl: 'sql',\n mysql: 'sql',\n prc: 'sql',\n tab: 'sql',\n udf: 'sql',\n viw: 'sql',\n stan: 'stan',\n stanfuncs: 'stan',\n stata: 'stata',\n step21: 'step21',\n step: 'step21',\n stp: 'step21',\n styl: 'stylus',\n subunit: 'subunit',\n swift: 'swift',\n taggerscript: 'taggerscript',\n yml: 'yaml',\n mir: 'yaml',\n reek: 'yaml',\n rviz: 'yaml',\n 'sublime-syntax': 'yaml',\n syntax: 'yaml',\n yaml: 'yaml',\n 'yaml-tmlanguage': 'yaml',\n 'yml.mysql': 'yaml',\n tap: 'tap',\n tcl: 'tcl',\n adp: 'tcl',\n tm: 'tcl',\n thrift: 'thrift',\n tp: 'tp',\n twig: 'twig',\n craftcms: 'twig',\n ts: 'typescript',\n tsx: 'typescript',\n vala: 'vala',\n vbnet: 'vbnet',\n vb: 'vbnet',\n vbscript: 'vbscript',\n vbs: 'vbscript',\n 'vbscript-html': 'vbscript-html',\n v: 'verilog',\n veo: 'verilog',\n vhdl: 'vhdl',\n vhd: 'vhdl',\n vhf: 'vhdl',\n vhi: 'vhdl',\n vho: 'vhdl',\n vhs: 'vhdl',\n vht: 'vhdl',\n vhw: 'vhdl',\n vim: 'vim',\n x86asm: 'x86asm',\n xl: 'xl',\n xquery: 'xquery',\n xpath: 'xquery',\n xq: 'xquery',\n zephir: 'zephir',\n zep: 'zephir',\n};\nfunction getLanguage(fileExtension) {\n var _a;\n return (_a = languagesToExt[fileExtension]) !== null && _a !== void 0 ? _a : 'plaintext';\n}\nexports.getLanguage = getLanguage;\n//# sourceMappingURL=highlight.js-helpers.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hljs = void 0;\nvar core_1 = __importDefault(require(\"highlight.js/lib/core\"));\nvar cpp_1 = __importDefault(require(\"highlight.js/lib/languages/cpp\"));\nvar xml_1 = __importDefault(require(\"highlight.js/lib/languages/xml\"));\nvar awk_1 = __importDefault(require(\"highlight.js/lib/languages/awk\"));\nvar bash_1 = __importDefault(require(\"highlight.js/lib/languages/bash\"));\nvar c_1 = __importDefault(require(\"highlight.js/lib/languages/c\"));\nvar clojure_1 = __importDefault(require(\"highlight.js/lib/languages/clojure\"));\nvar crystal_1 = __importDefault(require(\"highlight.js/lib/languages/crystal\"));\nvar csharp_1 = __importDefault(require(\"highlight.js/lib/languages/csharp\"));\nvar csp_1 = __importDefault(require(\"highlight.js/lib/languages/csp\"));\nvar css_1 = __importDefault(require(\"highlight.js/lib/languages/css\"));\nvar markdown_1 = __importDefault(require(\"highlight.js/lib/languages/markdown\"));\nvar dart_1 = __importDefault(require(\"highlight.js/lib/languages/dart\"));\nvar diff_1 = __importDefault(require(\"highlight.js/lib/languages/diff\"));\nvar dockerfile_1 = __importDefault(require(\"highlight.js/lib/languages/dockerfile\"));\nvar elixir_1 = __importDefault(require(\"highlight.js/lib/languages/elixir\"));\nvar elm_1 = __importDefault(require(\"highlight.js/lib/languages/elm\"));\nvar ruby_1 = __importDefault(require(\"highlight.js/lib/languages/ruby\"));\nvar erlang_1 = __importDefault(require(\"highlight.js/lib/languages/erlang\"));\nvar fsharp_1 = __importDefault(require(\"highlight.js/lib/languages/fsharp\"));\nvar go_1 = __importDefault(require(\"highlight.js/lib/languages/go\"));\nvar gradle_1 = __importDefault(require(\"highlight.js/lib/languages/gradle\"));\nvar groovy_1 = __importDefault(require(\"highlight.js/lib/languages/groovy\"));\nvar handlebars_1 = __importDefault(require(\"highlight.js/lib/languages/handlebars\"));\nvar haskell_1 = __importDefault(require(\"highlight.js/lib/languages/haskell\"));\nvar ini_1 = __importDefault(require(\"highlight.js/lib/languages/ini\"));\nvar java_1 = __importDefault(require(\"highlight.js/lib/languages/java\"));\nvar javascript_1 = __importDefault(require(\"highlight.js/lib/languages/javascript\"));\nvar json_1 = __importDefault(require(\"highlight.js/lib/languages/json\"));\nvar kotlin_1 = __importDefault(require(\"highlight.js/lib/languages/kotlin\"));\nvar less_1 = __importDefault(require(\"highlight.js/lib/languages/less\"));\nvar lisp_1 = __importDefault(require(\"highlight.js/lib/languages/lisp\"));\nvar lua_1 = __importDefault(require(\"highlight.js/lib/languages/lua\"));\nvar makefile_1 = __importDefault(require(\"highlight.js/lib/languages/makefile\"));\nvar perl_1 = __importDefault(require(\"highlight.js/lib/languages/perl\"));\nvar nginx_1 = __importDefault(require(\"highlight.js/lib/languages/nginx\"));\nvar objectivec_1 = __importDefault(require(\"highlight.js/lib/languages/objectivec\"));\nvar pgsql_1 = __importDefault(require(\"highlight.js/lib/languages/pgsql\"));\nvar php_1 = __importDefault(require(\"highlight.js/lib/languages/php\"));\nvar plaintext_1 = __importDefault(require(\"highlight.js/lib/languages/plaintext\"));\nvar powershell_1 = __importDefault(require(\"highlight.js/lib/languages/powershell\"));\nvar properties_1 = __importDefault(require(\"highlight.js/lib/languages/properties\"));\nvar protobuf_1 = __importDefault(require(\"highlight.js/lib/languages/protobuf\"));\nvar python_1 = __importDefault(require(\"highlight.js/lib/languages/python\"));\nvar rust_1 = __importDefault(require(\"highlight.js/lib/languages/rust\"));\nvar scala_1 = __importDefault(require(\"highlight.js/lib/languages/scala\"));\nvar scss_1 = __importDefault(require(\"highlight.js/lib/languages/scss\"));\nvar shell_1 = __importDefault(require(\"highlight.js/lib/languages/shell\"));\nvar sql_1 = __importDefault(require(\"highlight.js/lib/languages/sql\"));\nvar swift_1 = __importDefault(require(\"highlight.js/lib/languages/swift\"));\nvar yaml_1 = __importDefault(require(\"highlight.js/lib/languages/yaml\"));\nvar typescript_1 = __importDefault(require(\"highlight.js/lib/languages/typescript\"));\ncore_1.default.registerLanguage('cpp', cpp_1.default);\ncore_1.default.registerLanguage('xml', xml_1.default);\ncore_1.default.registerLanguage('awk', awk_1.default);\ncore_1.default.registerLanguage('bash', bash_1.default);\ncore_1.default.registerLanguage('c', c_1.default);\ncore_1.default.registerLanguage('clojure', clojure_1.default);\ncore_1.default.registerLanguage('crystal', crystal_1.default);\ncore_1.default.registerLanguage('csharp', csharp_1.default);\ncore_1.default.registerLanguage('csp', csp_1.default);\ncore_1.default.registerLanguage('css', css_1.default);\ncore_1.default.registerLanguage('markdown', markdown_1.default);\ncore_1.default.registerLanguage('dart', dart_1.default);\ncore_1.default.registerLanguage('diff', diff_1.default);\ncore_1.default.registerLanguage('dockerfile', dockerfile_1.default);\ncore_1.default.registerLanguage('elixir', elixir_1.default);\ncore_1.default.registerLanguage('elm', elm_1.default);\ncore_1.default.registerLanguage('ruby', ruby_1.default);\ncore_1.default.registerLanguage('erlang', erlang_1.default);\ncore_1.default.registerLanguage('fsharp', fsharp_1.default);\ncore_1.default.registerLanguage('go', go_1.default);\ncore_1.default.registerLanguage('gradle', gradle_1.default);\ncore_1.default.registerLanguage('groovy', groovy_1.default);\ncore_1.default.registerLanguage('handlebars', handlebars_1.default);\ncore_1.default.registerLanguage('haskell', haskell_1.default);\ncore_1.default.registerLanguage('ini', ini_1.default);\ncore_1.default.registerLanguage('java', java_1.default);\ncore_1.default.registerLanguage('javascript', javascript_1.default);\ncore_1.default.registerLanguage('json', json_1.default);\ncore_1.default.registerLanguage('kotlin', kotlin_1.default);\ncore_1.default.registerLanguage('less', less_1.default);\ncore_1.default.registerLanguage('lisp', lisp_1.default);\ncore_1.default.registerLanguage('lua', lua_1.default);\ncore_1.default.registerLanguage('makefile', makefile_1.default);\ncore_1.default.registerLanguage('perl', perl_1.default);\ncore_1.default.registerLanguage('nginx', nginx_1.default);\ncore_1.default.registerLanguage('objectivec', objectivec_1.default);\ncore_1.default.registerLanguage('pgsql', pgsql_1.default);\ncore_1.default.registerLanguage('php', php_1.default);\ncore_1.default.registerLanguage('plaintext', plaintext_1.default);\ncore_1.default.registerLanguage('powershell', powershell_1.default);\ncore_1.default.registerLanguage('properties', properties_1.default);\ncore_1.default.registerLanguage('protobuf', protobuf_1.default);\ncore_1.default.registerLanguage('python', python_1.default);\ncore_1.default.registerLanguage('rust', rust_1.default);\ncore_1.default.registerLanguage('scala', scala_1.default);\ncore_1.default.registerLanguage('scss', scss_1.default);\ncore_1.default.registerLanguage('shell', shell_1.default);\ncore_1.default.registerLanguage('sql', sql_1.default);\ncore_1.default.registerLanguage('swift', swift_1.default);\ncore_1.default.registerLanguage('yaml', yaml_1.default);\ncore_1.default.registerLanguage('typescript', typescript_1.default);\nexports.hljs = core_1.default;\n//# sourceMappingURL=highlight.js-slim.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashCode = exports.unifyPath = exports.escapeForRegExp = void 0;\nvar specials = [\n '-',\n '[',\n ']',\n '/',\n '{',\n '}',\n '(',\n ')',\n '*',\n '+',\n '?',\n '.',\n '\\\\',\n '^',\n '$',\n '|',\n];\nvar regex = RegExp('[' + specials.join('\\\\') + ']', 'g');\nfunction escapeForRegExp(str) {\n return str.replace(regex, '\\\\$&');\n}\nexports.escapeForRegExp = escapeForRegExp;\nfunction unifyPath(path) {\n return path ? path.replace(/\\\\/g, '/') : path;\n}\nexports.unifyPath = unifyPath;\nfunction hashCode(text) {\n var i, chr, len;\n var hash = 0;\n for (i = 0, len = text.length; i < len; i++) {\n chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n}\nexports.hashCode = hashCode;\n//# sourceMappingURL=utils.js.map","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToDMP = convertChangesToDMP;\n\n/*istanbul ignore end*/\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToXML = convertChangesToXML;\n\n/*istanbul ignore end*/\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push(' ');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffArrays = diffArrays;\nexports.arrayDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar arrayDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.arrayDiff = arrayDiff;\n\n/*istanbul ignore end*/\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Diff;\n\n/*istanbul ignore end*/\nfunction Diff() {}\n\nDiff.prototype = {\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n diff: function diff(oldString, newString) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath =\n /*istanbul ignore start*/\n void 0\n /*istanbul ignore end*/\n ;\n\n var addPath = bestPath[diagonalPath - 1],\n removePath = bestPath[diagonalPath + 1],\n _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen,\n canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\n return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n pushComponent: function pushComponent(components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n newPos = basePath.newPos,\n oldPos = newPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n castInput: function castInput(value) {\n return value;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n tokenize: function tokenize(value) {\n return value.split('');\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, components, newString, oldString, useLongestToken) {\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var lastComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\n components[componentLen - 2].value += lastComponent.value;\n components.pop();\n }\n\n return components;\n}\n\nfunction clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJiZXN0UGF0aCIsIm5ld1BvcyIsImNvbXBvbmVudHMiLCJvbGRQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJiYXNlUGF0aCIsImFkZFBhdGgiLCJyZW1vdmVQYXRoIiwiY2FuQWRkIiwiY2FuUmVtb3ZlIiwiY2xvbmVQYXRoIiwicHVzaENvbXBvbmVudCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsImFkZGVkIiwicmVtb3ZlZCIsImxhc3QiLCJwdXNoIiwiY29tbW9uQ291bnQiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjb21wYXJhdG9yIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiYXJyYXkiLCJpIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBvbmVudCIsInNsaWNlIiwibWFwIiwib2xkVmFsdWUiLCJ0bXAiLCJsYXN0Q29tcG9uZW50IiwicG9wIiwicGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWUsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsSUFBSSxDQUFDQyxTQUFMLEdBQWlCO0FBQUE7O0FBQUE7QUFDZkMsRUFBQUEsSUFEZSxnQkFDVkMsU0FEVSxFQUNDQyxTQURELEVBQzBCO0FBQUE7QUFB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R0FBMkJNLEdBQTNCO0FBQ0Q7QUFDRjtBQUNGLEdBdkMyRSxDQXlDNUU7QUFDQTtBQUNBOzs7QUFDQSxNQUFJQyxhQUFhLEdBQUd4QyxVQUFVLENBQUNrQyxZQUFZLEdBQUcsQ0FBaEIsQ0FBOUI7O0FBQ0EsTUFBSUEsWUFBWSxHQUFHLENBQWYsSUFDRyxPQUFPTSxhQUFhLENBQUN2RCxLQUFyQixLQUErQixRQURsQyxLQUVJdUQsYUFBYSxDQUFDdEIsS0FBZCxJQUF1QnNCLGFBQWEsQ0FBQ3JCLE9BRnpDLEtBR0d6QyxJQUFJLENBQUM2QyxNQUFMLENBQVksRUFBWixFQUFnQmlCLGFBQWEsQ0FBQ3ZELEtBQTlCLENBSFAsRUFHNkM7QUFDM0NlLElBQUFBLFVBQVUsQ0FBQ2tDLFlBQVksR0FBRyxDQUFoQixDQUFWLENBQTZCakQsS0FBN0IsSUFBc0N1RCxhQUFhLENBQUN2RCxLQUFwRDtBQUNBZSxJQUFBQSxVQUFVLENBQUN5QyxHQUFYO0FBQ0Q7O0FBRUQsU0FBT3pDLFVBQVA7QUFDRDs7QUFFRCxTQUFTWSxTQUFULENBQW1COEIsSUFBbkIsRUFBeUI7QUFDdkIsU0FBTztBQUFFM0MsSUFBQUEsTUFBTSxFQUFFMkMsSUFBSSxDQUFDM0MsTUFBZjtBQUF1QkMsSUFBQUEsVUFBVSxFQUFFMEMsSUFBSSxDQUFDMUMsVUFBTCxDQUFnQm9DLEtBQWhCLENBQXNCLENBQXRCO0FBQW5DLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBuZXdQb3M6IC0xLCBjb21wb25lbnRzOiBbXSB9XTtcblxuICAgIC8vIFNlZWQgZWRpdExlbmd0aCA9IDAsIGkuZS4gdGhlIGNvbnRlbnQgc3RhcnRzIHdpdGggdGhlIHNhbWUgdmFsdWVzXG4gICAgbGV0IG9sZFBvcyA9IHRoaXMuZXh0cmFjdENvbW1vbihiZXN0UGF0aFswXSwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIDApO1xuICAgIGlmIChiZXN0UGF0aFswXS5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgLy8gSWRlbnRpdHkgcGVyIHRoZSBlcXVhbGl0eSBhbmQgdG9rZW5pemVyXG4gICAgICByZXR1cm4gZG9uZShbe3ZhbHVlOiB0aGlzLmpvaW4obmV3U3RyaW5nKSwgY291bnQ6IG5ld1N0cmluZy5sZW5ndGh9XSk7XG4gICAgfVxuXG4gICAgLy8gTWFpbiB3b3JrZXIgbWV0aG9kLiBjaGVja3MgYWxsIHBlcm11dGF0aW9ucyBvZiBhIGdpdmVuIGVkaXQgbGVuZ3RoIGZvciBhY2NlcHRhbmNlLlxuICAgIGZ1bmN0aW9uIGV4ZWNFZGl0TGVuZ3RoKCkge1xuICAgICAgZm9yIChsZXQgZGlhZ29uYWxQYXRoID0gLTEgKiBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggPD0gZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoICs9IDIpIHtcbiAgICAgICAgbGV0IGJhc2VQYXRoO1xuICAgICAgICBsZXQgYWRkUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdLFxuICAgICAgICAgICAgcmVtb3ZlUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCArIDFdLFxuICAgICAgICAgICAgb2xkUG9zID0gKHJlbW92ZVBhdGggPyByZW1vdmVQYXRoLm5ld1BvcyA6IDApIC0gZGlhZ29uYWxQYXRoO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIE5vIG9uZSBlbHNlIGlzIGdvaW5nIHRvIGF0dGVtcHQgdG8gdXNlIHRoaXMgdmFsdWUsIGNsZWFyIGl0XG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2FuQWRkID0gYWRkUGF0aCAmJiBhZGRQYXRoLm5ld1BvcyArIDEgPCBuZXdMZW4sXG4gICAgICAgICAgICBjYW5SZW1vdmUgPSByZW1vdmVQYXRoICYmIDAgPD0gb2xkUG9zICYmIG9sZFBvcyA8IG9sZExlbjtcbiAgICAgICAgaWYgKCFjYW5BZGQgJiYgIWNhblJlbW92ZSkge1xuICAgICAgICAgIC8vIElmIHRoaXMgcGF0aCBpcyBhIHRlcm1pbmFsIHRoZW4gcHJ1bmVcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSBkaWFnb25hbCB0aGF0IHdlIHdhbnQgdG8gYnJhbmNoIGZyb20uIFdlIHNlbGVjdCB0aGUgcHJpb3JcbiAgICAgICAgLy8gcGF0aCB3aG9zZSBwb3NpdGlvbiBpbiB0aGUgbmV3IHN0cmluZyBpcyB0aGUgZmFydGhlc3QgZnJvbSB0aGUgb3JpZ2luXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwYXNzIHRoZSBib3VuZHMgb2YgdGhlIGRpZmYgZ3JhcGhcbiAgICAgICAgaWYgKCFjYW5BZGQgfHwgKGNhblJlbW92ZSAmJiBhZGRQYXRoLm5ld1BvcyA8IHJlbW92ZVBhdGgubmV3UG9zKSkge1xuICAgICAgICAgIGJhc2VQYXRoID0gY2xvbmVQYXRoKHJlbW92ZVBhdGgpO1xuICAgICAgICAgIHNlbGYucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VQYXRoID0gYWRkUGF0aDsgLy8gTm8gbmVlZCB0byBjbG9uZSwgd2UndmUgcHVsbGVkIGl0IGZyb20gdGhlIGxpc3RcbiAgICAgICAgICBiYXNlUGF0aC5uZXdQb3MrKztcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdHJ1ZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sZFBvcyA9IHNlbGYuZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCk7XG5cbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBoaXQgdGhlIGVuZCBvZiBib3RoIHN0cmluZ3MsIHRoZW4gd2UgYXJlIGRvbmVcbiAgICAgICAgaWYgKGJhc2VQYXRoLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmUoYnVpbGRWYWx1ZXMoc2VsZiwgYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHNlbGYudXNlTG9uZ2VzdFRva2VuKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHRyYWNrIHRoaXMgcGF0aCBhcyBhIHBvdGVudGlhbCBjYW5kaWRhdGUgYW5kIGNvbnRpbnVlLlxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlZGl0TGVuZ3RoKys7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybXMgdGhlIGxlbmd0aCBvZiBlZGl0IGl0ZXJhdGlvbi4gSXMgYSBiaXQgZnVnbHkgYXMgdGhpcyBoYXMgdG8gc3VwcG9ydCB0aGVcbiAgICAvLyBzeW5jIGFuZCBhc3luYyBtb2RlIHdoaWNoIGlzIG5ldmVyIGZ1bi4gTG9vcHMgb3ZlciBleGVjRWRpdExlbmd0aCB1bnRpbCBhIHZhbHVlXG4gICAgLy8gaXMgcHJvZHVjZWQsIG9yIHVudGlsIHRoZSBlZGl0IGxlbmd0aCBleGNlZWRzIG9wdGlvbnMubWF4RWRpdExlbmd0aCAoaWYgZ2l2ZW4pLFxuICAgIC8vIGluIHdoaWNoIGNhc2UgaXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGVkaXRMZW5ndGggPiBtYXhFZGl0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWV4ZWNFZGl0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIGV4ZWMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICBsZXQgcmV0ID0gZXhlY0VkaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHVzaENvbXBvbmVudChjb21wb25lbnRzLCBhZGRlZCwgcmVtb3ZlZCkge1xuICAgIGxldCBsYXN0ID0gY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgLy8gV2UgbmVlZCB0byBjbG9uZSBoZXJlIGFzIHRoZSBjb21wb25lbnQgY2xvbmUgb3BlcmF0aW9uIGlzIGp1c3RcbiAgICAgIC8vIGFzIHNoYWxsb3cgYXJyYXkgY2xvbmVcbiAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXSA9IHtjb3VudDogbGFzdC5jb3VudCArIDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goe2NvdW50OiAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfSk7XG4gICAgfVxuICB9LFxuICBleHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKSB7XG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsXG4gICAgICAgIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGgsXG4gICAgICAgIG5ld1BvcyA9IGJhc2VQYXRoLm5ld1BvcyxcbiAgICAgICAgb2xkUG9zID0gbmV3UG9zIC0gZGlhZ29uYWxQYXRoLFxuXG4gICAgICAgIGNvbW1vbkNvdW50ID0gMDtcbiAgICB3aGlsZSAobmV3UG9zICsgMSA8IG5ld0xlbiAmJiBvbGRQb3MgKyAxIDwgb2xkTGVuICYmIHRoaXMuZXF1YWxzKG5ld1N0cmluZ1tuZXdQb3MgKyAxXSwgb2xkU3RyaW5nW29sZFBvcyArIDFdKSkge1xuICAgICAgbmV3UG9zKys7XG4gICAgICBvbGRQb3MrKztcbiAgICAgIGNvbW1vbkNvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNvbW1vbkNvdW50KSB7XG4gICAgICBiYXNlUGF0aC5jb21wb25lbnRzLnB1c2goe2NvdW50OiBjb21tb25Db3VudH0pO1xuICAgIH1cblxuICAgIGJhc2VQYXRoLm5ld1BvcyA9IG5ld1BvcztcbiAgICByZXR1cm4gb2xkUG9zO1xuICB9LFxuXG4gIGVxdWFscyhsZWZ0LCByaWdodCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKGxlZnQsIHJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0XG4gICAgICAgIHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSAmJiBsZWZ0LnRvTG93ZXJDYXNlKCkgPT09IHJpZ2h0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlRW1wdHkoYXJyYXkpIHtcbiAgICBsZXQgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycmF5W2ldKSB7XG4gICAgICAgIHJldC5wdXNoKGFycmF5W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgY2FzdElucHV0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICB0b2tlbml6ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnJyk7XG4gIH0sXG4gIGpvaW4oY2hhcnMpIHtcbiAgICByZXR1cm4gY2hhcnMuam9pbignJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVmFsdWVzKGRpZmYsIGNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCB1c2VMb25nZXN0VG9rZW4pIHtcbiAgbGV0IGNvbXBvbmVudFBvcyA9IDAsXG4gICAgICBjb21wb25lbnRMZW4gPSBjb21wb25lbnRzLmxlbmd0aCxcbiAgICAgIG5ld1BvcyA9IDAsXG4gICAgICBvbGRQb3MgPSAwO1xuXG4gIGZvciAoOyBjb21wb25lbnRQb3MgPCBjb21wb25lbnRMZW47IGNvbXBvbmVudFBvcysrKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICBpZiAoIWNvbXBvbmVudC5yZW1vdmVkKSB7XG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCAmJiB1c2VMb25nZXN0VG9rZW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24odmFsdWUsIGkpIHtcbiAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgcmV0dXJuIG9sZFZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCA/IG9sZFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbih2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4obmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG9sZFN0cmluZy5zbGljZShvbGRQb3MsIG9sZFBvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gUmV2ZXJzZSBhZGQgYW5kIHJlbW92ZSBzbyByZW1vdmVzIGFyZSBvdXRwdXQgZmlyc3QgdG8gbWF0Y2ggY29tbW9uIGNvbnZlbnRpb25cbiAgICAgIC8vIFRoZSBkaWZmaW5nIGFsZ29yaXRobSBpcyB0aWVkIHRvIGFkZCB0aGVuIHJlbW92ZSBvdXRwdXQgYW5kIHRoaXMgaXMgdGhlIHNpbXBsZXN0XG4gICAgICAvLyByb3V0ZSB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0IHdpdGggbWluaW1hbCBvdmVyaGVhZC5cbiAgICAgIGlmIChjb21wb25lbnRQb3MgJiYgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXS5hZGRlZCkge1xuICAgICAgICBsZXQgdG1wID0gY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXSA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3NdID0gdG1wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpYWwgY2FzZSBoYW5kbGUgZm9yIHdoZW4gb25lIHRlcm1pbmFsIGlzIGlnbm9yZWQgKGkuZS4gd2hpdGVzcGFjZSkuXG4gIC8vIEZvciB0aGlzIGNhc2Ugd2UgbWVyZ2UgdGhlIHRlcm1pbmFsIGludG8gdGhlIHByaW9yIHN0cmluZyBhbmQgZHJvcCB0aGUgY2hhbmdlLlxuICAvLyBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBzdHJpbmcgbW9kZS5cbiAgbGV0IGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGxhc3RDb21wb25lbnQudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiAobGFzdENvbXBvbmVudC5hZGRlZCB8fCBsYXN0Q29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgbGFzdENvbXBvbmVudC52YWx1ZSkpIHtcbiAgICBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDJdLnZhbHVlICs9IGxhc3RDb21wb25lbnQudmFsdWU7XG4gICAgY29tcG9uZW50cy5wb3AoKTtcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBjbG9uZVBhdGgocGF0aCkge1xuICByZXR1cm4geyBuZXdQb3M6IHBhdGgubmV3UG9zLCBjb21wb25lbnRzOiBwYXRoLmNvbXBvbmVudHMuc2xpY2UoMCkgfTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffChars = diffChars;\nexports.characterDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar characterDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.characterDiff = characterDiff;\n\n/*istanbul ignore end*/\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffCss = diffCss;\nexports.cssDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar cssDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.cssDiff = cssDiff;\n\n/*istanbul ignore end*/\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffJson = diffJson;\nexports.canonicalize = canonicalize;\nexports.jsonDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*istanbul ignore end*/\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n/*istanbul ignore start*/\nexports.jsonDiff = jsonDiff;\n\n/*istanbul ignore end*/\njsonDiff.useLongestToken = true;\njsonDiff.tokenize =\n/*istanbul ignore start*/\n_line\n/*istanbul ignore end*/\n.\n/*istanbul ignore start*/\nlineDiff\n/*istanbul ignore end*/\n.tokenize;\n\njsonDiff.castInput = function (value) {\n /*istanbul ignore start*/\n var _this$options =\n /*istanbul ignore end*/\n this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n typeof v === 'undefined' ? undefinedReplacement : v\n );\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return (\n /*istanbul ignore start*/\n _base\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ].prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'))\n );\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (\n /*istanbul ignore start*/\n _typeof(\n /*istanbul ignore end*/\n obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FB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Z0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffLines = diffLines;\nexports.diffTrimmedLines = diffTrimmedLines;\nexports.lineDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar lineDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.lineDiff = lineDiff;\n\n/*istanbul ignore end*/\nlineDiff.tokenize = function (value) {\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\n\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJkaWZmTGluZXMiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiLCJkaWZmVHJpbW1lZExpbmVzIiwiZ2VuZXJhdGVPcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxRQUFRLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFqQjs7Ozs7O0FBQ1BELFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQixVQUFTQyxLQUFULEVBQWdCO0FBQ2xDLE1BQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsTUFDSUMsZ0JBQWdCLEdBQUdGLEtBQUssQ0FBQ0csS0FBTixDQUFZLFdBQVosQ0FEdkIsQ0FEa0MsQ0FJbEM7O0FBQ0EsTUFBSSxDQUFDRCxnQkFBZ0IsQ0FBQ0EsZ0JBQWdCLENBQUNFLE1BQWpCLEdBQTBCLENBQTNCLENBQXJCLEVBQW9EO0FBQ2xERixJQUFBQSxnQkFBZ0IsQ0FBQ0csR0FBakI7QUFDRCxHQVBpQyxDQVNsQzs7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixnQkFBZ0IsQ0FBQ0UsTUFBckMsRUFBNkNFLENBQUMsRUFBOUMsRUFBa0Q7QUFDaEQsUUFBSUMsSUFBSSxHQUFHTCxnQkFBZ0IsQ0FBQ0ksQ0FBRCxDQUEzQjs7QUFFQSxRQUFJQSxDQUFDLEdBQUcsQ0FBSixJQUFTLENBQUMsS0FBS0UsT0FBTCxDQUFhQyxjQUEzQixFQUEyQztBQUN6Q1IsTUFBQUEsUUFBUSxDQUFDQSxRQUFRLENBQUNHLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBUixJQUFpQ0csSUFBakM7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLEtBQUtDLE9BQUwsQ0FBYUUsZ0JBQWpCLEVBQW1DO0FBQ2pDSCxRQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQ0ksSUFBTCxFQUFQO0FBQ0Q7O0FBQ0RWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjTCxJQUFkO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPTixRQUFQO0FBQ0QsQ0F4QkQ7O0FBMEJPLFNBQVNZLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsUUFBbkMsRUFBNkM7QUFBRSxTQUFPbkIsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDs7QUFDaEcsU0FBU0UsZ0JBQVQsQ0FBMEJKLE1BQTFCLEVBQWtDQyxNQUFsQyxFQUEwQ0MsUUFBMUMsRUFBb0Q7QUFDekQsTUFBSVIsT0FBTztBQUFHO0FBQUE7QUFBQTs7QUFBQVc7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2IsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QlAsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBsaW5lRGlmZiA9IG5ldyBEaWZmKCk7XG5saW5lRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICF0aGlzLm9wdGlvbnMubmV3bGluZUlzVG9rZW4pIHtcbiAgICAgIHJldExpbmVzW3JldExpbmVzLmxlbmd0aCAtIDFdICs9IGxpbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSkge1xuICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVHJpbW1lZExpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykge1xuICBsZXQgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhjYWxsYmFjaywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffSentences = diffSentences;\nexports.sentenceDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar sentenceDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.sentenceDiff = sentenceDiff;\n\n/*istanbul ignore end*/\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffWords = diffWords;\nexports.diffWordsWithSpace = diffWordsWithSpace;\nexports.wordDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.wordDiff = wordDiff;\n\n/*istanbul ignore end*/\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Diff\", {\n enumerable: true,\n get: function get() {\n return _base[\"default\"];\n }\n});\nObject.defineProperty(exports, \"diffChars\", {\n enumerable: true,\n get: function get() {\n return _character.diffChars;\n }\n});\nObject.defineProperty(exports, \"diffWords\", {\n enumerable: true,\n get: function get() {\n return _word.diffWords;\n }\n});\nObject.defineProperty(exports, \"diffWordsWithSpace\", {\n enumerable: true,\n get: function get() {\n return _word.diffWordsWithSpace;\n }\n});\nObject.defineProperty(exports, \"diffLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffLines;\n }\n});\nObject.defineProperty(exports, \"diffTrimmedLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffTrimmedLines;\n }\n});\nObject.defineProperty(exports, \"diffSentences\", {\n enumerable: true,\n get: function get() {\n return _sentence.diffSentences;\n }\n});\nObject.defineProperty(exports, \"diffCss\", {\n enumerable: true,\n get: function get() {\n return _css.diffCss;\n }\n});\nObject.defineProperty(exports, \"diffJson\", {\n enumerable: true,\n get: function get() {\n return _json.diffJson;\n }\n});\nObject.defineProperty(exports, \"canonicalize\", {\n enumerable: true,\n get: function get() {\n return _json.canonicalize;\n }\n});\nObject.defineProperty(exports, \"diffArrays\", {\n enumerable: true,\n get: function get() {\n return _array.diffArrays;\n }\n});\nObject.defineProperty(exports, \"applyPatch\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatch;\n }\n});\nObject.defineProperty(exports, \"applyPatches\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatches;\n }\n});\nObject.defineProperty(exports, \"parsePatch\", {\n enumerable: true,\n get: function get() {\n return _parse.parsePatch;\n }\n});\nObject.defineProperty(exports, \"merge\", {\n enumerable: true,\n get: function get() {\n return _merge.merge;\n }\n});\nObject.defineProperty(exports, \"structuredPatch\", {\n enumerable: true,\n get: function get() {\n return _create.structuredPatch;\n }\n});\nObject.defineProperty(exports, \"createTwoFilesPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createTwoFilesPatch;\n }\n});\nObject.defineProperty(exports, \"createPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createPatch;\n }\n});\nObject.defineProperty(exports, \"convertChangesToDMP\", {\n enumerable: true,\n get: function get() {\n return _dmp.convertChangesToDMP;\n }\n});\nObject.defineProperty(exports, \"convertChangesToXML\", {\n enumerable: true,\n get: function get() {\n return _xml.convertChangesToXML;\n }\n});\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./diff/base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_character = require(\"./diff/character\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_word = require(\"./diff/word\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./diff/line\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_sentence = require(\"./diff/sentence\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_css = require(\"./diff/css\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_json = require(\"./diff/json\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"./diff/array\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_apply = require(\"./patch/apply\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./patch/parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_merge = require(\"./patch/merge\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_create = require(\"./patch/create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_dmp = require(\"./convert/dmp\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_xml = require(\"./convert/xml\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTZWUgTElDRU5TRSBmaWxlIGZvciB0ZXJtcyBvZiB1c2UgKi9cblxuLypcbiAqIFRleHQgZGlmZiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGxpYnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBBUElTOlxuICogSnNEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBKc0RpZmYuZGlmZldvcmRzOiBXb3JkIChhcyBkZWZpbmVkIGJ5IFxcYiByZWdleCkgZGlmZiB3aGljaCBpZ25vcmVzIHdoaXRlc3BhY2VcbiAqIEpzRGlmZi5kaWZmTGluZXM6IExpbmUgYmFzZWQgZGlmZlxuICpcbiAqIEpzRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2gsIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsIGNyZWF0ZVBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGFwcGx5UGF0Y2gsXG4gIGFwcGx5UGF0Y2hlcyxcbiAgcGFyc2VQYXRjaCxcbiAgbWVyZ2UsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyPatch = applyPatch;\nexports.applyPatches = applyPatches;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_distanceIterator = _interopRequireDefault(require(\"../util/distance-iterator\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nfunction applyPatch(source, uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n line === patchContent\n );\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _distanceIterator\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ])(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters[j];\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7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QUNEOztBQUVELE1BQUlnRCxZQUFZLEdBQUcsQ0FBbkI7O0FBQ0EsV0FBU0MsWUFBVCxHQUF3QjtBQUN0QixRQUFJQyxLQUFLLEdBQUdsRCxPQUFPLENBQUNnRCxZQUFZLEVBQWIsQ0FBbkI7O0FBQ0EsUUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVixhQUFPakQsT0FBTyxDQUFDa0QsUUFBUixFQUFQO0FBQ0Q7O0FBRURsRCxJQUFBQSxPQUFPLENBQUNtRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFRCxVQUFJRSxjQUFjLEdBQUd6RCxVQUFVLENBQUN3RCxJQUFELEVBQU9KLEtBQVAsRUFBY2pELE9BQWQsQ0FBL0I7QUFDQUEsTUFBQUEsT0FBTyxDQUFDdUQsT0FBUixDQUFnQk4sS0FBaEIsRUFBdUJLLGNBQXZCLEVBQXVDLFVBQVNGLEdBQVQsRUFBYztBQUNuRCxZQUFJQSxHQUFKLEVBQVM7QUFDUCxpQkFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFREosUUFBQUEsWUFBWTtBQUNiLE9BTkQ7QUFPRCxLQWJEO0FBY0Q7O0FBQ0RBLEVBQUFBLFlBQVk7QUFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.structuredPatch = structuredPatch;\nexports.formatPatch = formatPatch;\nexports.createTwoFilesPatch = createTwoFilesPatch;\nexports.createPatch = createPatch;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_line = require(\"../diff/line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _line\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n diffLines)\n /*istanbul ignore end*/\n (oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n /*istanbul ignore start*/\n var _loop = function _loop(\n /*istanbul ignore end*/\n i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n /*istanbul ignore start*/\n var _curRange;\n\n /*istanbul ignore end*/\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n /*istanbul ignore start*/\n var _curRange2;\n\n /*istanbul ignore end*/\n // Overlapping\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange2 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines)));\n } else {\n /*istanbul ignore start*/\n var _curRange3;\n\n /*istanbul ignore end*/\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange3 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n /*istanbul ignore start*/\n _loop(\n /*istanbul ignore end*/\n i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\n\nfunction formatPatch(diff) {\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\n\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\n\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsInJldCIsImFwcGx5Iiwiam9pbiIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtBQTJCLFdBQS9CLEVBQTRDO0FBQzFDRCxJQUFBQSxPQUFPLENBQUNDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxNQUFNQyxJQUFJO0FBQUc7QUFBQTtBQUFBOztBQUFBQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsR0FBVVAsTUFBVixFQUFrQkMsTUFBbEIsRUFBMEJHLE9BQTFCLENBQWI7O0FBQ0EsTUFBRyxDQUFDRSxJQUFKLEVBQVU7QUFDUjtBQUNEOztBQUVEQSxFQUFBQSxJQUFJLENBQUNFLElBQUwsQ0FBVTtBQUFDQyxJQUFBQSxLQUFLLEVBQUUsRUFBUjtBQUFZQyxJQUFBQSxLQUFLLEVBQUU7QUFBbkIsR0FBVixFQWJ1RyxDQWFwRTs7QUFFbkMsV0FBU0MsWUFBVCxDQUFzQkQsS0FBdEIsRUFBNkI7QUFDM0IsV0FBT0EsS0FBSyxDQUFDRSxHQUFOLENBQVUsVUFBU0MsS0FBVCxFQUFnQjtBQUFFLGFBQU8sTUFBTUEsS0FBYjtBQUFxQixLQUFqRCxDQUFQO0FBQ0Q7O0FBRUQsTUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQSxNQUFJQyxhQUFhLEdBQUcsQ0FBcEI7QUFBQSxNQUF1QkMsYUFBYSxHQUFHLENBQXZDO0FBQUEsTUFBMENDLFFBQVEsR0FBRyxFQUFyRDtBQUFBLE1BQ0lDLE9BQU8sR0FBRyxDQURkO0FBQUEsTUFDaUJDLE9BQU8sR0FBRyxDQUQzQjs7QUFwQnVHO0FBQUE7QUFBQTtBQXNCOUZDLEVBQUFBLENBdEI4RjtBQXVCckcsUUFBTUMsT0FBTyxHQUFHZixJQUFJLENBQUNjLENBQUQsQ0FBcEI7QUFBQSxRQUNNVixLQUFLLEdBQUdXLE9BQU8sQ0FBQ1gsS0FBUixJQUFpQlcsT0FBTyxDQUFDWixLQUFSLENBQWNhLE9BQWQsQ0FBc0IsS0FBdEIsRUFBNkIsRUFBN0IsRUFBaUNDLEtBQWpDLENBQXVDLElBQXZDLENBRC9CO0FBRUFGLElBQUFBLE9BQU8sQ0FBQ1gsS0FBUixHQUFnQkEsS0FBaEI7O0FBRUEsUUFBSVcsT0FBTyxDQUFDRyxLQUFSLElBQWlCSCxPQUFPLENBQUNJLE9BQTdCLEVBQXNDO0FBQUE7QUFBQTs7QUFBQTtBQUNwQztBQUNBLFVBQUksQ0FBQ1YsYUFBTCxFQUFvQjtBQUNsQixZQUFNVyxJQUFJLEdBQUdwQixJQUFJLENBQUNjLENBQUMsR0FBRyxDQUFMLENBQWpCO0FBQ0FMLFFBQUFBLGFBQWEsR0FBR0csT0FBaEI7QUFDQUYsUUFBQUEsYUFBYSxHQUFHRyxPQUFoQjs7QUFFQSxZQUFJTyxJQUFKLEVBQVU7QUFDUlQsVUFBQUEsUUFBUSxHQUFHYixPQUFPLENBQUNDLE9BQVIsR0FBa0IsQ0FBbEIsR0FBc0JNLFlBQVksQ0FBQ2UsSUFBSSxDQUFDaEIsS0FBTCxDQUFXaUIsS0FBWCxDQUFpQixDQUFDdkIsT0FBTyxDQUFDQyxPQUExQixDQUFELENBQWxDLEdBQXlFLEVBQXBGO0FBQ0FVLFVBQUFBLGFBQWEsSUFBSUUsUUFBUSxDQUFDVyxNQUExQjtBQUNBWixVQUFBQSxhQUFhLElBQUlDLFFBQVEsQ0FBQ1csTUFBMUI7QUFDRDtBQUNGLE9BWm1DLENBY3BDOzs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQVgsTUFBQUEsUUFBUSxFQUFDVCxJQUFUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0JFLE1BQUFBLEtBQUssQ0FBQ0UsR0FBTixDQUFVLFVBQVNDLEtBQVQsRUFBZ0I7QUFDMUMsZUFBTyxDQUFDUSxPQUFPLENBQUNHLEtBQVIsR0FBZ0IsR0FBaEIsR0FBc0IsR0FBdkIsSUFBOEJYLEtBQXJDO0FBQ0QsT0FGaUIsQ0FBbEIsR0Fmb0MsQ0FtQnBDOzs7QUFDQSxVQUFJUSxPQUFPLENBQUNHLEtBQVosRUFBbUI7QUFDakJMLFFBQUFBLE9BQU8sSUFBSVQsS0FBSyxDQUFDa0IsTUFBakI7QUFDRCxPQUZELE1BRU87QUFDTFYsUUFBQUEsT0FBTyxJQUFJUixLQUFLLENBQUNrQixNQUFqQjtBQUNEO0FBQ0YsS0F6QkQsTUF5Qk87QUFDTDtBQUNBLFVBQUliLGFBQUosRUFBbUI7QUFDakI7QUFDQSxZQUFJTCxLQUFLLENBQUNrQixNQUFOLElBQWdCeEIsT0FBTyxDQUFDQyxPQUFSLEdBQWtCLENBQWxDLElBQXVDZSxDQUFDLEdBQUdkLElBQUksQ0FBQ3NCLE1BQUwsR0FBYyxDQUE3RCxFQUFnRTtBQUFBO0FBQUE7O0FBQUE7QUFDOUQ7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFYLFVBQUFBLFFBQVEsRUFBQ1QsSUFBVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtCRyxVQUFBQSxZQUFZLENBQUNELEtBQUQsQ0FBOUI7QUFDRCxTQUhELE1BR087QUFBQTtBQUFBOztBQUFBO0FBQ0w7QUFDQSxjQUFJbUIsV0FBVyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBU3JCLEtBQUssQ0FBQ2tCLE1BQWYsRUFBdUJ4QixPQUFPLENBQUNDLE9BQS9CLENBQWxCOztBQUNBOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBWSxVQUFBQSxRQUFRLEVBQUNULElBQVQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQkcsVUFBQUEsWUFBWSxDQUFDRCxLQUFLLENBQUNpQixLQUFOLENBQVksQ0FBWixFQUFlRSxXQUFmLENBQUQsQ0FBOUI7O0FBRUEsY0FBSUcsSUFBSSxHQUFHO0FBQ1RDLFlBQUFBLFFBQVEsRUFBRWxCLGFBREQ7QUFFVG1CLFlBQUFBLFFBQVEsRUFBR2hCLE9BQU8sR0FBR0gsYUFBVixHQUEwQmMsV0FGNUI7QUFHVE0sWUFBQUEsUUFBUSxFQUFFbkIsYUFIRDtBQUlUb0IsWUFBQUEsUUFBUSxFQUFHakIsT0FBTyxHQUFHSCxhQUFWLEdBQTBCYSxXQUo1QjtBQUtUbkIsWUFBQUEsS0FBSyxFQUFFTztBQUxFLFdBQVg7O0FBT0EsY0FBSUcsQ0FBQyxJQUFJZCxJQUFJLENBQUNzQixNQUFMLEdBQWMsQ0FBbkIsSUFBd0JsQixLQUFLLENBQUNrQixNQUFOLElBQWdCeEIsT0FBTyxDQUFDQyxPQUFwRCxFQUE2RDtBQUMzRDtBQUNBLGdCQUFJZ0MsYUFBYSxHQUFLLEtBQUQsQ0FBUUMsSUFBUixDQUFhdEMsTUFBYixDQUFyQjtBQUNBLGdCQUFJdUMsYUFBYSxHQUFLLEtBQUQsQ0FBUUQsSUFBUixDQUFhckMsTUFBYixDQUFyQjtBQUNBLGdCQUFJdUMsY0FBYyxHQUFHOUIsS0FBSyxDQUFDa0IsTUFBTixJQUFnQixDQUFoQixJQUFxQlgsUUFBUSxDQUFDVyxNQUFULEdBQWtCSSxJQUFJLENBQUNFLFFBQWpFOztBQUNBLGdCQUFJLENBQUNHLGFBQUQsSUFBa0JHLGNBQWxCLElBQW9DeEMsTUFBTSxDQUFDNEIsTUFBUCxHQUFnQixDQUF4RCxFQUEyRDtBQUN6RDtBQUNBO0FBQ0FYLGNBQUFBLFFBQVEsQ0FBQ3dCLE1BQVQsQ0FBZ0JULElBQUksQ0FBQ0UsUUFBckIsRUFBK0IsQ0FBL0IsRUFBa0MsOEJBQWxDO0FBQ0Q7O0FBQ0QsZ0JBQUssQ0FBQ0csYUFBRCxJQUFrQixDQUFDRyxjQUFwQixJQUF1QyxDQUFDRCxhQUE1QyxFQUEyRDtBQUN6RHRCLGNBQUFBLFFBQVEsQ0FBQ1QsSUFBVCxDQUFjLDhCQUFkO0FBQ0Q7QUFDRjs7QUFDRE0sVUFBQUEsS0FBSyxDQUFDTixJQUFOLENBQVd3QixJQUFYO0FBRUFqQixVQUFBQSxhQUFhLEdBQUcsQ0FBaEI7QUFDQUMsVUFBQUEsYUFBYSxHQUFHLENBQWhCO0FBQ0FDLFVBQUFBLFFBQVEsR0FBRyxFQUFYO0FBQ0Q7QUFDRjs7QUFDREMsTUFBQUEsT0FBTyxJQUFJUixLQUFLLENBQUNrQixNQUFqQjtBQUNBVCxNQUFBQSxPQUFPLElBQUlULEtBQUssQ0FBQ2tCLE1BQWpCO0FBQ0Q7QUE5Rm9HOztBQXNCdkcsT0FBSyxJQUFJUixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHZCxJQUFJLENBQUNzQixNQUF6QixFQUFpQ1IsQ0FBQyxFQUFsQyxFQUFzQztBQUFBO0FBQUE7QUFBQTtBQUE3QkEsSUFBQUEsQ0FBNkI7QUF5RXJDOztBQUVELFNBQU87QUFDTHRCLElBQUFBLFdBQVcsRUFBRUEsV0FEUjtBQUNxQkMsSUFBQUEsV0FBVyxFQUFFQSxXQURsQztBQUVMRyxJQUFBQSxTQUFTLEVBQUVBLFNBRk47QUFFaUJDLElBQUFBLFNBQVMsRUFBRUEsU0FGNUI7QUFHTFcsSUFBQUEsS0FBSyxFQUFFQTtBQUhGLEdBQVA7QUFLRDs7QUFFTSxTQUFTNEIsV0FBVCxDQUFxQnBDLElBQXJCLEVBQTJCO0FBQ2hDLE1BQU1xQyxHQUFHLEdBQUcsRUFBWjs7QUFDQSxNQUFJckMsSUFBSSxDQUFDUixXQUFMLElBQW9CUSxJQUFJLENBQUNQLFdBQTdCLEVBQTBDO0FBQ3hDNEMsSUFBQUEsR0FBRyxDQUFDbkMsSUFBSixDQUFTLFlBQVlGLElBQUksQ0FBQ1IsV0FBMUI7QUFDRDs7QUFDRDZDLEVBQUFBLEdBQUcsQ0FBQ25DLElBQUosQ0FBUyxxRUFBVDtBQUNBbUMsRUFBQUEsR0FBRyxDQUFDbkMsSUFBSixDQUFTLFNBQVNGLElBQUksQ0FBQ1IsV0FBZCxJQUE2QixPQUFPUSxJQUFJLENBQUNKLFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0ksSUFBSSxDQUFDSixTQUF0RixDQUFUO0FBQ0F5QyxFQUFBQSxHQUFHLENBQUNuQyxJQUFKLENBQVMsU0FBU0YsSUFBSSxDQUFDUCxXQUFkLElBQTZCLE9BQU9PLElBQUksQ0FBQ0gsU0FBWixLQUEwQixXQUExQixHQUF3QyxFQUF4QyxHQUE2QyxPQUFPRyxJQUFJLENBQUNILFNBQXRGLENBQVQ7O0FBRUEsT0FBSyxJQUFJaUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2QsSUFBSSxDQUFDUSxLQUFMLENBQVdjLE1BQS9CLEVBQXVDUixDQUFDLEVBQXhDLEVBQTRDO0FBQzFDLFFBQU1ZLElBQUksR0FBRzFCLElBQUksQ0FBQ1EsS0FBTCxDQUFXTSxDQUFYLENBQWIsQ0FEMEMsQ0FFMUM7QUFDQTtBQUNBOztBQUNBLFFBQUlZLElBQUksQ0FBQ0UsUUFBTCxLQUFrQixDQUF0QixFQUF5QjtBQUN2QkYsTUFBQUEsSUFBSSxDQUFDQyxRQUFMLElBQWlCLENBQWpCO0FBQ0Q7O0FBQ0QsUUFBSUQsSUFBSSxDQUFDSSxRQUFMLEtBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCSixNQUFBQSxJQUFJLENBQUNHLFFBQUwsSUFBaUIsQ0FBakI7QUFDRDs7QUFDRFEsSUFBQUEsR0FBRyxDQUFDbkMsSUFBSixDQUNFLFNBQVN3QixJQUFJLENBQUNDLFFBQWQsR0FBeUIsR0FBekIsR0FBK0JELElBQUksQ0FBQ0UsUUFBcEMsR0FDRSxJQURGLEdBQ1NGLElBQUksQ0FBQ0csUUFEZCxHQUN5QixHQUR6QixHQUMrQkgsSUFBSSxDQUFDSSxRQURwQyxHQUVFLEtBSEo7QUFLQU8sSUFBQUEsR0FBRyxDQUFDbkMsSUFBSixDQUFTb0MsS0FBVCxDQUFlRCxHQUFmLEVBQW9CWCxJQUFJLENBQUN0QixLQUF6QjtBQUNEOztBQUVELFNBQU9pQyxHQUFHLENBQUNFLElBQUosQ0FBUyxJQUFULElBQWlCLElBQXhCO0FBQ0Q7O0FBRU0sU0FBU0MsbUJBQVQsQ0FBNkJoRCxXQUE3QixFQUEwQ0MsV0FBMUMsRUFBdURDLE1BQXZELEVBQStEQyxNQUEvRCxFQUF1RUMsU0FBdkUsRUFBa0ZDLFNBQWxGLEVBQTZGQyxPQUE3RixFQUFzRztBQUMzRyxTQUFPc0MsV0FBVyxDQUFDN0MsZUFBZSxDQUFDQyxXQUFELEVBQWNDLFdBQWQsRUFBMkJDLE1BQTNCLEVBQW1DQyxNQUFuQyxFQUEyQ0MsU0FBM0MsRUFBc0RDLFNBQXRELEVBQWlFQyxPQUFqRSxDQUFoQixDQUFsQjtBQUNEOztBQUVNLFNBQVMyQyxXQUFULENBQXFCQyxRQUFyQixFQUErQmhELE1BQS9CLEVBQXVDQyxNQUF2QyxFQUErQ0MsU0FBL0MsRUFBMERDLFNBQTFELEVBQXFFQyxPQUFyRSxFQUE4RTtBQUNuRixTQUFPMEMsbUJBQW1CLENBQUNFLFFBQUQsRUFBV0EsUUFBWCxFQUFxQmhELE1BQXJCLEVBQTZCQyxNQUE3QixFQUFxQ0MsU0FBckMsRUFBZ0RDLFNBQWhELEVBQTJEQyxPQUEzRCxDQUExQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcLineCount = calcLineCount;\nexports.merge = merge;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_create = require(\"./create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"../util/array\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction calcLineCount(hunk) {\n /*istanbul ignore start*/\n var _calcOldNewLineCount =\n /*istanbul ignore end*/\n calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\n\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (param)[0]\n );\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _create\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n structuredPatch)\n /*istanbul ignore end*/\n (undefined, undefined, base, param)\n );\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines;\n\n /*istanbul ignore end*/\n // Mine inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines2;\n\n /*istanbul ignore end*/\n // Theirs inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines2 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines3;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines3 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines4;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines4 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines4\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges));\n\n return;\n }\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayEqual)\n /*istanbul ignore end*/\n (myChanges, theirChanges)) {\n /*istanbul ignore start*/\n var _hunk$lines5;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines5 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines5\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n /*istanbul ignore start*/\n var _hunk$lines6;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines6 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines6\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndD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QUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parsePatch = parsePatch;\n\n/*istanbul ignore end*/\nfunction parsePatch(uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayEqual = arrayEqual;\nexports.arrayStartsWith = arrayStartsWith;\n\n/*istanbul ignore end*/\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\n\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\n/*istanbul ignore end*/\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction\n/*istanbul ignore start*/\n_default\n/*istanbul ignore end*/\n(start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateOptions = generateOptions;\n\n/*istanbul ignore end*/\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function (Hogan) {\n // Setup regex assignments\n // remove whitespace according to Mustache spec\n var rIsWhitespace = /\\S/,\n rQuot = /\\\"/g,\n rNewline = /\\n/g,\n rCr = /\\r/g,\n rSlash = /\\\\/g,\n rLineSep = /\\u2028/,\n rParagraphSep = /\\u2029/;\n\n Hogan.tags = {\n '#': 1, '^': 2, '<': 3, '$': 4,\n '/': 5, '!': 6, '>': 7, '=': 8, '_v': 9,\n '{': 10, '&': 11, '_t': 12\n };\n\n Hogan.scan = function scan(text, delimiters) {\n var len = text.length,\n IN_TEXT = 0,\n IN_TAG_TYPE = 1,\n IN_TAG = 2,\n state = IN_TEXT,\n tagType = null,\n tag = null,\n buf = '',\n tokens = [],\n seenTag = false,\n i = 0,\n lineStart = 0,\n otag = '{{',\n ctag = '}}';\n\n function addBuf() {\n if (buf.length > 0) {\n tokens.push({tag: '_t', text: new String(buf)});\n buf = '';\n }\n }\n\n function lineIsWhitespace() {\n var isAllWhitespace = true;\n for (var j = lineStart; j < tokens.length; j++) {\n isAllWhitespace =\n (Hogan.tags[tokens[j].tag] < Hogan.tags['_v']) ||\n (tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);\n if (!isAllWhitespace) {\n return false;\n }\n }\n\n return isAllWhitespace;\n }\n\n function filterLine(haveSeenTag, noNewLine) {\n addBuf();\n\n if (haveSeenTag && lineIsWhitespace()) {\n for (var j = lineStart, next; j < tokens.length; j++) {\n if (tokens[j].text) {\n if ((next = tokens[j+1]) && next.tag == '>') {\n // set indent to token value\n next.indent = tokens[j].text.toString()\n }\n tokens.splice(j, 1);\n }\n }\n } else if (!noNewLine) {\n tokens.push({tag:'\\n'});\n }\n\n seenTag = false;\n lineStart = tokens.length;\n }\n\n function changeDelimiters(text, index) {\n var close = '=' + ctag,\n closeIndex = text.indexOf(close, index),\n delimiters = trim(\n text.substring(text.indexOf('=', index) + 1, closeIndex)\n ).split(' ');\n\n otag = delimiters[0];\n ctag = delimiters[delimiters.length - 1];\n\n return closeIndex + close.length - 1;\n }\n\n if (delimiters) {\n delimiters = delimiters.split(' ');\n otag = delimiters[0];\n ctag = delimiters[1];\n }\n\n for (i = 0; i < len; i++) {\n if (state == IN_TEXT) {\n if (tagChange(otag, text, i)) {\n --i;\n addBuf();\n state = IN_TAG_TYPE;\n } else {\n if (text.charAt(i) == '\\n') {\n filterLine(seenTag);\n } else {\n buf += text.charAt(i);\n }\n }\n } else if (state == IN_TAG_TYPE) {\n i += otag.length - 1;\n tag = Hogan.tags[text.charAt(i + 1)];\n tagType = tag ? text.charAt(i + 1) : '_v';\n if (tagType == '=') {\n i = changeDelimiters(text, i);\n state = IN_TEXT;\n } else {\n if (tag) {\n i++;\n }\n state = IN_TAG;\n }\n seenTag = i;\n } else {\n if (tagChange(ctag, text, i)) {\n tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,\n i: (tagType == '/') ? seenTag - otag.length : i + ctag.length});\n buf = '';\n i += ctag.length - 1;\n state = IN_TEXT;\n if (tagType == '{') {\n if (ctag == '}}') {\n i++;\n } else {\n cleanTripleStache(tokens[tokens.length - 1]);\n }\n }\n } else {\n buf += text.charAt(i);\n }\n }\n }\n\n filterLine(seenTag, true);\n\n return tokens;\n }\n\n function cleanTripleStache(token) {\n if (token.n.substr(token.n.length - 1) === '}') {\n token.n = token.n.substring(0, token.n.length - 1);\n }\n }\n\n function trim(s) {\n if (s.trim) {\n return s.trim();\n }\n\n return s.replace(/^\\s*|\\s*$/g, '');\n }\n\n function tagChange(tag, text, index) {\n if (text.charAt(index) != tag.charAt(0)) {\n return false;\n }\n\n for (var i = 1, l = tag.length; i < l; i++) {\n if (text.charAt(index + i) != tag.charAt(i)) {\n return false;\n }\n }\n\n return true;\n }\n\n // the tags allowed inside super templates\n var allowedInSuper = {'_t': true, '\\n': true, '$': true, '/': true};\n\n function buildTree(tokens, kind, stack, customTags) {\n var instructions = [],\n opener = null,\n tail = null,\n token = null;\n\n tail = stack[stack.length - 1];\n\n while (tokens.length > 0) {\n token = tokens.shift();\n\n if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {\n throw new Error('Illegal content in < super tag.');\n }\n\n if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {\n stack.push(token);\n token.nodes = buildTree(tokens, token.tag, stack, customTags);\n } else if (token.tag == '/') {\n if (stack.length === 0) {\n throw new Error('Closing tag without opener: /' + token.n);\n }\n opener = stack.pop();\n if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {\n throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);\n }\n opener.end = token.i;\n return instructions;\n } else if (token.tag == '\\n') {\n token.last = (tokens.length == 0) || (tokens[0].tag == '\\n');\n }\n\n instructions.push(token);\n }\n\n if (stack.length > 0) {\n throw new Error('missing closing tag: ' + stack.pop().n);\n }\n\n return instructions;\n }\n\n function isOpener(token, tags) {\n for (var i = 0, l = tags.length; i < l; i++) {\n if (tags[i].o == token.n) {\n token.tag = '#';\n return true;\n }\n }\n }\n\n function isCloser(close, open, tags) {\n for (var i = 0, l = tags.length; i < l; i++) {\n if (tags[i].c == close && tags[i].o == open) {\n return true;\n }\n }\n }\n\n function stringifySubstitutions(obj) {\n var items = [];\n for (var key in obj) {\n items.push('\"' + esc(key) + '\": function(c,p,t,i) {' + obj[key] + '}');\n }\n return \"{ \" + items.join(\",\") + \" }\";\n }\n\n function stringifyPartials(codeObj) {\n var partials = [];\n for (var key in codeObj.partials) {\n partials.push('\"' + esc(key) + '\":{name:\"' + esc(codeObj.partials[key].name) + '\", ' + stringifyPartials(codeObj.partials[key]) + \"}\");\n }\n return \"partials: {\" + partials.join(\",\") + \"}, subs: \" + stringifySubstitutions(codeObj.subs);\n }\n\n Hogan.stringify = function(codeObj, text, options) {\n return \"{code: function (c,p,i) { \" + Hogan.wrapMain(codeObj.code) + \" },\" + stringifyPartials(codeObj) + \"}\";\n }\n\n var serialNo = 0;\n Hogan.generate = function(tree, text, options) {\n serialNo = 0;\n var context = { code: '', subs: {}, partials: {} };\n Hogan.walk(tree, context);\n\n if (options.asString) {\n return this.stringify(context, text, options);\n }\n\n return this.makeTemplate(context, text, options);\n }\n\n Hogan.wrapMain = function(code) {\n return 'var t=this;t.b(i=i||\"\");' + code + 'return t.fl();';\n }\n\n Hogan.template = Hogan.Template;\n\n Hogan.makeTemplate = function(codeObj, text, options) {\n var template = this.makePartials(codeObj);\n template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));\n return new this.template(template, text, this, options);\n }\n\n Hogan.makePartials = function(codeObj) {\n var key, template = {subs: {}, partials: codeObj.partials, name: codeObj.name};\n for (key in template.partials) {\n template.partials[key] = this.makePartials(template.partials[key]);\n }\n for (key in codeObj.subs) {\n template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);\n }\n return template;\n }\n\n function esc(s) {\n return s.replace(rSlash, '\\\\\\\\')\n .replace(rQuot, '\\\\\\\"')\n .replace(rNewline, '\\\\n')\n .replace(rCr, '\\\\r')\n .replace(rLineSep, '\\\\u2028')\n .replace(rParagraphSep, '\\\\u2029');\n }\n\n function chooseMethod(s) {\n return (~s.indexOf('.')) ? 'd' : 'f';\n }\n\n function createPartial(node, context) {\n var prefix = \"<\" + (context.prefix || \"\");\n var sym = prefix + node.n + serialNo++;\n context.partials[sym] = {name: node.n, partials: {}};\n context.code += 't.b(t.rp(\"' + esc(sym) + '\",c,p,\"' + (node.indent || '') + '\"));';\n return sym;\n }\n\n Hogan.codegen = {\n '#': function(node, context) {\n context.code += 'if(t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),' +\n 'c,p,0,' + node.i + ',' + node.end + ',\"' + node.otag + \" \" + node.ctag + '\")){' +\n 't.rs(c,p,' + 'function(c,p,t){';\n Hogan.walk(node.nodes, context);\n context.code += '});c.pop();}';\n },\n\n '^': function(node, context) {\n context.code += 'if(!t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),c,p,1,0,0,\"\")){';\n Hogan.walk(node.nodes, context);\n context.code += '};';\n },\n\n '>': createPartial,\n '<': function(node, context) {\n var ctx = {partials: {}, code: '', subs: {}, inPartial: true};\n Hogan.walk(node.nodes, ctx);\n var template = context.partials[createPartial(node, context)];\n template.subs = ctx.subs;\n template.partials = ctx.partials;\n },\n\n '$': function(node, context) {\n var ctx = {subs: {}, code: '', partials: context.partials, prefix: node.n};\n Hogan.walk(node.nodes, ctx);\n context.subs[node.n] = ctx.code;\n if (!context.inPartial) {\n context.code += 't.sub(\"' + esc(node.n) + '\",c,p,i);';\n }\n },\n\n '\\n': function(node, context) {\n context.code += write('\"\\\\n\"' + (node.last ? '' : ' + i'));\n },\n\n '_v': function(node, context) {\n context.code += 't.b(t.v(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n },\n\n '_t': function(node, context) {\n context.code += write('\"' + esc(node.text) + '\"');\n },\n\n '{': tripleStache,\n\n '&': tripleStache\n }\n\n function tripleStache(node, context) {\n context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n }\n\n function write(s) {\n return 't.b(' + s + ');';\n }\n\n Hogan.walk = function(nodelist, context) {\n var func;\n for (var i = 0, l = nodelist.length; i < l; i++) {\n func = Hogan.codegen[nodelist[i].tag];\n func && func(nodelist[i], context);\n }\n return context;\n }\n\n Hogan.parse = function(tokens, text, options) {\n options = options || {};\n return buildTree(tokens, '', [], options.sectionTags || []);\n }\n\n Hogan.cache = {};\n\n Hogan.cacheKey = function(text, options) {\n return [text, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join('||');\n }\n\n Hogan.compile = function(text, options) {\n options = options || {};\n var key = Hogan.cacheKey(text, options);\n var template = this.cache[key];\n\n if (template) {\n var partials = template.partials;\n for (var name in partials) {\n delete partials[name].instance;\n }\n return template;\n }\n\n template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);\n return this.cache[key] = template;\n }\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is for use with Node.js. See dist/ for browser files.\n\nvar Hogan = require('./compiler');\nHogan.Template = require('./template').Template;\nHogan.template = Hogan.Template;\nmodule.exports = Hogan;\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Hogan = {};\n\n(function (Hogan) {\n Hogan.Template = function (codeObj, text, compiler, options) {\n codeObj = codeObj || {};\n this.r = codeObj.code || this.r;\n this.c = compiler;\n this.options = options || {};\n this.text = text || '';\n this.partials = codeObj.partials || {};\n this.subs = codeObj.subs || {};\n this.buf = '';\n }\n\n Hogan.Template.prototype = {\n // render: replaced by generated code.\n r: function (context, partials, indent) { return ''; },\n\n // variable escaping\n v: hoganEscape,\n\n // triple stache\n t: coerceToString,\n\n render: function render(context, partials, indent) {\n return this.ri([context], partials || {}, indent);\n },\n\n // render internal -- a hook for overrides that catches partials too\n ri: function (context, partials, indent) {\n return this.r(context, partials, indent);\n },\n\n // ensurePartial\n ep: function(symbol, partials) {\n var partial = this.partials[symbol];\n\n // check to see that if we've instantiated this partial before\n var template = partials[partial.name];\n if (partial.instance && partial.base == template) {\n return partial.instance;\n }\n\n if (typeof template == 'string') {\n if (!this.c) {\n throw new Error(\"No compiler available.\");\n }\n template = this.c.compile(template, this.options);\n }\n\n if (!template) {\n return null;\n }\n\n // We use this to check whether the partials dictionary has changed\n this.partials[symbol].base = template;\n\n if (partial.subs) {\n // Make sure we consider parent template now\n if (!partials.stackText) partials.stackText = {};\n for (key in partial.subs) {\n if (!partials.stackText[key]) {\n partials.stackText[key] = (this.activeSub !== undefined && partials.stackText[this.activeSub]) ? partials.stackText[this.activeSub] : this.text;\n }\n }\n template = createSpecializedPartial(template, partial.subs, partial.partials,\n this.stackSubs, this.stackPartials, partials.stackText);\n }\n this.partials[symbol].instance = template;\n\n return template;\n },\n\n // tries to find a partial in the current scope and render it\n rp: function(symbol, context, partials, indent) {\n var partial = this.ep(symbol, partials);\n if (!partial) {\n return '';\n }\n\n return partial.ri(context, partials, indent);\n },\n\n // render a section\n rs: function(context, partials, section) {\n var tail = context[context.length - 1];\n\n if (!isArray(tail)) {\n section(context, partials, this);\n return;\n }\n\n for (var i = 0; i < tail.length; i++) {\n context.push(tail[i]);\n section(context, partials, this);\n context.pop();\n }\n },\n\n // maybe start a section\n s: function(val, ctx, partials, inverted, start, end, tags) {\n var pass;\n\n if (isArray(val) && val.length === 0) {\n return false;\n }\n\n if (typeof val == 'function') {\n val = this.ms(val, ctx, partials, inverted, start, end, tags);\n }\n\n pass = !!val;\n\n if (!inverted && pass && ctx) {\n ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);\n }\n\n return pass;\n },\n\n // find values with dotted names\n d: function(key, ctx, partials, returnFound) {\n var found,\n names = key.split('.'),\n val = this.f(names[0], ctx, partials, returnFound),\n doModelGet = this.options.modelGet,\n cx = null;\n\n if (key === '.' && isArray(ctx[ctx.length - 2])) {\n val = ctx[ctx.length - 1];\n } else {\n for (var i = 1; i < names.length; i++) {\n found = findInScope(names[i], val, doModelGet);\n if (found !== undefined) {\n cx = val;\n val = found;\n } else {\n val = '';\n }\n }\n }\n\n if (returnFound && !val) {\n return false;\n }\n\n if (!returnFound && typeof val == 'function') {\n ctx.push(cx);\n val = this.mv(val, ctx, partials);\n ctx.pop();\n }\n\n return val;\n },\n\n // find values with normal names\n f: function(key, ctx, partials, returnFound) {\n var val = false,\n v = null,\n found = false,\n doModelGet = this.options.modelGet;\n\n for (var i = ctx.length - 1; i >= 0; i--) {\n v = ctx[i];\n val = findInScope(key, v, doModelGet);\n if (val !== undefined) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n return (returnFound) ? false : \"\";\n }\n\n if (!returnFound && typeof val == 'function') {\n val = this.mv(val, ctx, partials);\n }\n\n return val;\n },\n\n // higher order templates\n ls: function(func, cx, partials, text, tags) {\n var oldTags = this.options.delimiters;\n\n this.options.delimiters = tags;\n this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));\n this.options.delimiters = oldTags;\n\n return false;\n },\n\n // compile text\n ct: function(text, cx, partials) {\n if (this.options.disableLambda) {\n throw new Error('Lambda features disabled.');\n }\n return this.c.compile(text, this.options).render(cx, partials);\n },\n\n // template result buffering\n b: function(s) { this.buf += s; },\n\n fl: function() { var r = this.buf; this.buf = ''; return r; },\n\n // method replace section\n ms: function(func, ctx, partials, inverted, start, end, tags) {\n var textSource,\n cx = ctx[ctx.length - 1],\n result = func.call(cx);\n\n if (typeof result == 'function') {\n if (inverted) {\n return true;\n } else {\n textSource = (this.activeSub && this.subsText && this.subsText[this.activeSub]) ? this.subsText[this.activeSub] : this.text;\n return this.ls(result, cx, partials, textSource.substring(start, end), tags);\n }\n }\n\n return result;\n },\n\n // method replace variable\n mv: function(func, ctx, partials) {\n var cx = ctx[ctx.length - 1];\n var result = func.call(cx);\n\n if (typeof result == 'function') {\n return this.ct(coerceToString(result.call(cx)), cx, partials);\n }\n\n return result;\n },\n\n sub: function(name, context, partials, indent) {\n var f = this.subs[name];\n if (f) {\n this.activeSub = name;\n f(context, partials, this, indent);\n this.activeSub = false;\n }\n }\n\n };\n\n //Find a key in an object\n function findInScope(key, scope, doModelGet) {\n var val;\n\n if (scope && typeof scope == 'object') {\n\n if (scope[key] !== undefined) {\n val = scope[key];\n\n // try lookup with get for backbone or similar model data\n } else if (doModelGet && scope.get && typeof scope.get == 'function') {\n val = scope.get(key);\n }\n }\n\n return val;\n }\n\n function createSpecializedPartial(instance, subs, partials, stackSubs, stackPartials, stackText) {\n function PartialTemplate() {};\n PartialTemplate.prototype = instance;\n function Substitutions() {};\n Substitutions.prototype = instance.subs;\n var key;\n var partial = new PartialTemplate();\n partial.subs = new Substitutions();\n partial.subsText = {}; //hehe. substext.\n partial.buf = '';\n\n stackSubs = stackSubs || {};\n partial.stackSubs = stackSubs;\n partial.subsText = stackText;\n for (key in subs) {\n if (!stackSubs[key]) stackSubs[key] = subs[key];\n }\n for (key in stackSubs) {\n partial.subs[key] = stackSubs[key];\n }\n\n stackPartials = stackPartials || {};\n partial.stackPartials = stackPartials;\n for (key in partials) {\n if (!stackPartials[key]) stackPartials[key] = partials[key];\n }\n for (key in stackPartials) {\n partial.partials[key] = stackPartials[key];\n }\n\n return partial;\n }\n\n var rAmp = /&/g,\n rLt = //g,\n rApos = /\\'/g,\n rQuot = /\\\"/g,\n hChars = /[&<>\\\"\\']/;\n\n function coerceToString(val) {\n return String((val === null || val === undefined) ? '' : val);\n }\n\n function hoganEscape(str) {\n str = coerceToString(str);\n return hChars.test(str) ?\n str\n .replace(rAmp, '&')\n .replace(rLt, '<')\n .replace(rGt, '>')\n .replace(rApos, ''')\n .replace(rQuot, '"') :\n str;\n }\n\n var isArray = Array.isArray || function(a) {\n return Object.prototype.toString.call(a) === '[object Array]';\n };\n\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","/**\n * Identicon.js 2.3.3\n * http://github.com/stewartlord/identicon.js\n *\n * PNGLib required for PNG output\n * http://www.xarg.org/download/pnglib.js\n *\n * Copyright 2018, Stewart Lord\n * Released under the BSD license\n * http://www.opensource.org/licenses/bsd-license.php\n */\n\n(function() {\n var PNGlib;\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n PNGlib = require('./pnglib');\n } else {\n PNGlib = window.PNGlib;\n }\n\n var Identicon = function(hash, options){\n if (typeof(hash) !== 'string' || hash.length < 15) {\n throw 'A hash of at least 15 characters is required.';\n }\n\n this.defaults = {\n background: [240, 240, 240, 255],\n margin: 0.08,\n size: 64,\n saturation: 0.7,\n brightness: 0.5,\n format: 'png'\n };\n\n this.options = typeof(options) === 'object' ? options : this.defaults;\n\n // backward compatibility with old constructor (hash, size, margin)\n if (typeof(arguments[1]) === 'number') { this.options.size = arguments[1]; }\n if (arguments[2]) { this.options.margin = arguments[2]; }\n\n this.hash = hash\n this.background = this.options.background || this.defaults.background;\n this.size = this.options.size || this.defaults.size;\n this.format = this.options.format || this.defaults.format;\n this.margin = this.options.margin !== undefined ? this.options.margin : this.defaults.margin;\n\n // foreground defaults to last 7 chars as hue at 70% saturation, 50% brightness\n var hue = parseInt(this.hash.substr(-7), 16) / 0xfffffff;\n var saturation = this.options.saturation || this.defaults.saturation;\n var brightness = this.options.brightness || this.defaults.brightness;\n this.foreground = this.options.foreground || this.hsl2rgb(hue, saturation, brightness);\n };\n\n Identicon.prototype = {\n background: null,\n foreground: null,\n hash: null,\n margin: null,\n size: null,\n format: null,\n\n image: function(){\n return this.isSvg()\n ? new Svg(this.size, this.foreground, this.background)\n : new PNGlib(this.size, this.size, 256);\n },\n\n render: function(){\n var image = this.image(),\n size = this.size,\n baseMargin = Math.floor(size * this.margin),\n cell = Math.floor((size - (baseMargin * 2)) / 5),\n margin = Math.floor((size - cell * 5) / 2),\n bg = image.color.apply(image, this.background),\n fg = image.color.apply(image, this.foreground);\n\n // the first 15 characters of the hash control the pixels (even/odd)\n // they are drawn down the middle first, then mirrored outwards\n var i, color;\n for (i = 0; i < 15; i++) {\n color = parseInt(this.hash.charAt(i), 16) % 2 ? bg : fg;\n if (i < 5) {\n this.rectangle(2 * cell + margin, i * cell + margin, cell, cell, color, image);\n } else if (i < 10) {\n this.rectangle(1 * cell + margin, (i - 5) * cell + margin, cell, cell, color, image);\n this.rectangle(3 * cell + margin, (i - 5) * cell + margin, cell, cell, color, image);\n } else if (i < 15) {\n this.rectangle(0 * cell + margin, (i - 10) * cell + margin, cell, cell, color, image);\n this.rectangle(4 * cell + margin, (i - 10) * cell + margin, cell, cell, color, image);\n }\n }\n\n return image;\n },\n\n rectangle: function(x, y, w, h, color, image){\n if (this.isSvg()) {\n image.rectangles.push({x: x, y: y, w: w, h: h, color: color});\n } else {\n var i, j;\n for (i = x; i < x + w; i++) {\n for (j = y; j < y + h; j++) {\n image.buffer[image.index(i, j)] = color;\n }\n }\n }\n },\n\n // adapted from: https://gist.github.com/aemkei/1325937\n hsl2rgb: function(h, s, b){\n h *= 6;\n s = [\n b += s *= b < .5 ? b : 1 - b,\n b - h % 1 * s * 2,\n b -= s *= 2,\n b,\n b + h % 1 * s,\n b + s\n ];\n\n return[\n s[ ~~h % 6 ] * 255, // red\n s[ (h|16) % 6 ] * 255, // green\n s[ (h|8) % 6 ] * 255 // blue\n ];\n },\n\n toString: function(raw){\n // backward compatibility with old toString, default to base64\n if (raw) {\n return this.render().getDump();\n } else {\n return this.render().getBase64();\n }\n },\n\n isSvg: function(){\n return this.format.match(/svg/i)\n }\n };\n\n var Svg = function(size, foreground, background){\n this.size = size;\n this.foreground = this.color.apply(this, foreground);\n this.background = this.color.apply(this, background);\n this.rectangles = [];\n };\n\n Svg.prototype = {\n size: null,\n foreground: null,\n background: null,\n rectangles: null,\n\n color: function(r, g, b, a){\n var values = [r, g, b].map(Math.round);\n values.push((a >= 0) && (a <= 255) ? a/255 : 1);\n return 'rgba(' + values.join(',') + ')';\n },\n\n getDump: function(){\n var i,\n xml,\n rect,\n fg = this.foreground,\n bg = this.background,\n stroke = this.size * 0.005;\n\n xml = \"\"\n + \"\";\n\n for (i = 0; i < this.rectangles.length; i++) {\n rect = this.rectangles[i];\n if (rect.color == bg) continue;\n xml += \" \";\n }\n xml += \" \"\n\n return xml;\n },\n\n getBase64: function(){\n if ('function' === typeof btoa) {\n return btoa(this.getDump());\n } else if (Buffer) {\n return new Buffer(this.getDump(), 'binary').toString('base64');\n } else {\n throw 'Cannot generate base64 output';\n }\n }\n };\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = Identicon;\n } else {\n window.Identicon = Identicon;\n }\n})();\n","/**\n* A handy class to calculate color values.\n*\n* @version 1.0\n* @author Robert Eisele \n* @copyright Copyright (c) 2010, Robert Eisele\n* @link http://www.xarg.org/2010/03/generate-client-side-png-files-using-javascript/\n* @license http://www.opensource.org/licenses/bsd-license.php BSD License\n*\n*/\n\n(function() {\n\n\t// helper functions for that ctx\n\tfunction write(buffer, offs) {\n\t\tfor (var i = 2; i < arguments.length; i++) {\n\t\t\tfor (var j = 0; j < arguments[i].length; j++) {\n\t\t\t\tbuffer[offs++] = arguments[i].charAt(j);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction byte2(w) {\n\t\treturn String.fromCharCode((w >> 8) & 255, w & 255);\n\t}\n\n\tfunction byte4(w) {\n\t\treturn String.fromCharCode((w >> 24) & 255, (w >> 16) & 255, (w >> 8) & 255, w & 255);\n\t}\n\n\tfunction byte2lsb(w) {\n\t\treturn String.fromCharCode(w & 255, (w >> 8) & 255);\n\t}\n\n\t// modified from original source to support NPM\n\tvar PNGlib = function(width,height,depth) {\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\n\t\t// pixel data and row filter identifier size\n\t\tthis.pix_size = height * (width + 1);\n\n\t\t// deflate header, pix_size, block headers, adler32 checksum\n\t\tthis.data_size = 2 + this.pix_size + 5 * Math.floor((0xfffe + this.pix_size) / 0xffff) + 4;\n\n\t\t// offsets and sizes of Png chunks\n\t\tthis.ihdr_offs = 0;\t\t\t\t\t\t\t\t\t// IHDR offset and size\n\t\tthis.ihdr_size = 4 + 4 + 13 + 4;\n\t\tthis.plte_offs = this.ihdr_offs + this.ihdr_size;\t// PLTE offset and size\n\t\tthis.plte_size = 4 + 4 + 3 * depth + 4;\n\t\tthis.trns_offs = this.plte_offs + this.plte_size;\t// tRNS offset and size\n\t\tthis.trns_size = 4 + 4 + depth + 4;\n\t\tthis.idat_offs = this.trns_offs + this.trns_size;\t// IDAT offset and size\n\t\tthis.idat_size = 4 + 4 + this.data_size + 4;\n\t\tthis.iend_offs = this.idat_offs + this.idat_size;\t// IEND offset and size\n\t\tthis.iend_size = 4 + 4 + 4;\n\t\tthis.buffer_size = this.iend_offs + this.iend_size;\t// total PNG size\n\n\t\tthis.buffer = new Array();\n\t\tthis.palette = new Object();\n\t\tthis.pindex = 0;\n\n\t\tvar _crc32 = new Array();\n\n\t\t// initialize buffer with zero bytes\n\t\tfor (var i = 0; i < this.buffer_size; i++) {\n\t\t\tthis.buffer[i] = \"\\x00\";\n\t\t}\n\n\t\t// initialize non-zero elements\n\t\twrite(this.buffer, this.ihdr_offs, byte4(this.ihdr_size - 12), 'IHDR', byte4(width), byte4(height), \"\\x08\\x03\");\n\t\twrite(this.buffer, this.plte_offs, byte4(this.plte_size - 12), 'PLTE');\n\t\twrite(this.buffer, this.trns_offs, byte4(this.trns_size - 12), 'tRNS');\n\t\twrite(this.buffer, this.idat_offs, byte4(this.idat_size - 12), 'IDAT');\n\t\twrite(this.buffer, this.iend_offs, byte4(this.iend_size - 12), 'IEND');\n\n\t\t// initialize deflate header\n\t\tvar header = ((8 + (7 << 4)) << 8) | (3 << 6);\n\t\theader+= 31 - (header % 31);\n\n\t\twrite(this.buffer, this.idat_offs + 8, byte2(header));\n\n\t\t// initialize deflate block headers\n\t\tfor (var i = 0; (i << 16) - 1 < this.pix_size; i++) {\n\t\t\tvar size, bits;\n\t\t\tif (i + 0xffff < this.pix_size) {\n\t\t\t\tsize = 0xffff;\n\t\t\t\tbits = \"\\x00\";\n\t\t\t} else {\n\t\t\t\tsize = this.pix_size - (i << 16) - i;\n\t\t\t\tbits = \"\\x01\";\n\t\t\t}\n\t\t\twrite(this.buffer, this.idat_offs + 8 + 2 + (i << 16) + (i << 2), bits, byte2lsb(size), byte2lsb(~size));\n\t\t}\n\n\t\t/* Create crc32 lookup table */\n\t\tfor (var i = 0; i < 256; i++) {\n\t\t\tvar c = i;\n\t\t\tfor (var j = 0; j < 8; j++) {\n\t\t\t\tif (c & 1) {\n\t\t\t\t\tc = -306674912 ^ ((c >> 1) & 0x7fffffff);\n\t\t\t\t} else {\n\t\t\t\t\tc = (c >> 1) & 0x7fffffff;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_crc32[i] = c;\n\t\t}\n\n\t\t// compute the index into a png for a given pixel\n\t\tthis.index = function(x,y) {\n\t\t\tvar i = y * (this.width + 1) + x + 1;\n\t\t\tvar j = this.idat_offs + 8 + 2 + 5 * Math.floor((i / 0xffff) + 1) + i;\n\t\t\treturn j;\n\t\t}\n\n\t\t// convert a color and build up the palette\n\t\tthis.color = function(red, green, blue, alpha) {\n\n\t\t\talpha = alpha >= 0 ? alpha : 255;\n\t\t\tvar color = (((((alpha << 8) | red) << 8) | green) << 8) | blue;\n\n\t\t\tif (typeof this.palette[color] == \"undefined\") {\n\t\t\t\tif (this.pindex == this.depth) return \"\\x00\";\n\n\t\t\t\tvar ndx = this.plte_offs + 8 + 3 * this.pindex;\n\n\t\t\t\tthis.buffer[ndx + 0] = String.fromCharCode(red);\n\t\t\t\tthis.buffer[ndx + 1] = String.fromCharCode(green);\n\t\t\t\tthis.buffer[ndx + 2] = String.fromCharCode(blue);\n\t\t\t\tthis.buffer[this.trns_offs+8+this.pindex] = String.fromCharCode(alpha);\n\n\t\t\t\tthis.palette[color] = String.fromCharCode(this.pindex++);\n\t\t\t}\n\t\t\treturn this.palette[color];\n\t\t}\n\n\t\t// output a PNG string, Base64 encoded\n\t\tthis.getBase64 = function() {\n\n\t\t\tvar s = this.getDump();\n\n\t\t\tvar ch = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\t\t\tvar c1, c2, c3, e1, e2, e3, e4;\n\t\t\tvar l = s.length;\n\t\t\tvar i = 0;\n\t\t\tvar r = \"\";\n\n\t\t\tdo {\n\t\t\t\tc1 = s.charCodeAt(i);\n\t\t\t\te1 = c1 >> 2;\n\t\t\t\tc2 = s.charCodeAt(i+1);\n\t\t\t\te2 = ((c1 & 3) << 4) | (c2 >> 4);\n\t\t\t\tc3 = s.charCodeAt(i+2);\n\t\t\t\tif (l < i+2) { e3 = 64; } else { e3 = ((c2 & 0xf) << 2) | (c3 >> 6); }\n\t\t\t\tif (l < i+3) { e4 = 64; } else { e4 = c3 & 0x3f; }\n\t\t\t\tr+= ch.charAt(e1) + ch.charAt(e2) + ch.charAt(e3) + ch.charAt(e4);\n\t\t\t} while ((i+= 3) < l);\n\t\t\treturn r;\n\t\t}\n\n\t\t// output a PNG string\n\t\tthis.getDump = function() {\n\n\t\t\t// compute adler32 of output pixels + row filter bytes\n\t\t\tvar BASE = 65521; /* largest prime smaller than 65536 */\n\t\t\tvar NMAX = 5552; /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */\n\t\t\tvar s1 = 1;\n\t\t\tvar s2 = 0;\n\t\t\tvar n = NMAX;\n\n\t\t\tfor (var y = 0; y < this.height; y++) {\n\t\t\t\tfor (var x = -1; x < this.width; x++) {\n\t\t\t\t\ts1+= this.buffer[this.index(x, y)].charCodeAt(0);\n\t\t\t\t\ts2+= s1;\n\t\t\t\t\tif ((n-= 1) == 0) {\n\t\t\t\t\t\ts1%= BASE;\n\t\t\t\t\t\ts2%= BASE;\n\t\t\t\t\t\tn = NMAX;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ts1%= BASE;\n\t\t\ts2%= BASE;\n\t\t\twrite(this.buffer, this.idat_offs + this.idat_size - 8, byte4((s2 << 16) | s1));\n\n\t\t\t// compute crc32 of the PNG chunks\n\t\t\tfunction crc32(png, offs, size) {\n\t\t\t\tvar crc = -1;\n\t\t\t\tfor (var i = 4; i < size-4; i += 1) {\n\t\t\t\t\tcrc = _crc32[(crc ^ png[offs+i].charCodeAt(0)) & 0xff] ^ ((crc >> 8) & 0x00ffffff);\n\t\t\t\t}\n\t\t\t\twrite(png, offs+size-4, byte4(crc ^ -1));\n\t\t\t}\n\n\t\t\tcrc32(this.buffer, this.ihdr_offs, this.ihdr_size);\n\t\t\tcrc32(this.buffer, this.plte_offs, this.plte_size);\n\t\t\tcrc32(this.buffer, this.trns_offs, this.trns_size);\n\t\t\tcrc32(this.buffer, this.idat_offs, this.idat_size);\n\t\t\tcrc32(this.buffer, this.iend_offs, this.iend_size);\n\n\t\t\t// convert PNG to string\n\t\t\treturn \"\\x89PNG\\r\\n\\x1a\\n\"+this.buffer.join('');\n\t\t}\n\t}\n\n\t// modified from original source to support NPM\n\tif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n\t\tmodule.exports = PNGlib;\n\t} else {\n\t\twindow.PNGlib = PNGlib;\n\t}\n})();\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","\nvar navigator = {};\nnavigator.userAgent = false;\n\nvar window = {};\n/*\n * jsrsasign(all) 11.1.1 (2026-02-21) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\n */\nvar VERSION = \"11.1.1\";\nvar VERSION_FULL = \"jsrsasign(all) 11.1.1 (2026-02-21) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\";\n\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty(\"init\")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty(\"toString\")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n >>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p>>2]&255}};f.BlockCipher=n.extend({cfg:n.cfg.extend({mode:m,padding:h}),reset:function(){n.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;\nthis._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var p=f.CipherParams=k.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),m=(g.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;\nreturn(a?l.create([1398893684,1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=l.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return p.create({ciphertext:a,salt:c})}},j=f.SerializableCipher=k.extend({cfg:k.extend({format:m}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var e=a.createEncryptor(c,d);b=e.finalize(b);e=e.cfg;return p.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,\nblockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return\"string\"==typeof a?b.parse(a,this):a}}),g=(g.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=l.random(8));a=v.create({keySize:b+c}).compute(a,d);c=l.create(a.words.slice(b),4*c);a.sigBytes=4*b;return p.create({key:a,iv:c,salt:d})}},s=f.PasswordBasedCipher=j.extend({cfg:j.cfg.extend({kdf:g}),encrypt:function(a,\nb,c,d){d=this.cfg.extend(d);c=d.kdf.execute(c,a.keySize,a.ivSize);d.iv=c.iv;a=j.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.execute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return j.decrypt.call(this,a,b,c.key,d)}})}();\n\n/*\nCryptoJS v3.1.2 aes.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){for(var q=CryptoJS,x=q.lib.BlockCipher,r=q.algo,j=[],y=[],z=[],A=[],B=[],C=[],s=[],u=[],v=[],w=[],g=[],k=0;256>k;k++)g[k]=128>k?k<<1:k<<1^283;for(var n=0,l=0,k=0;256>k;k++){var f=l^l<<1^l<<2^l<<3^l<<4,f=f>>>8^f&255^99;j[n]=f;y[f]=n;var t=g[n],D=g[t],E=g[D],b=257*g[f]^16843008*f;z[n]=b<<24|b>>>8;A[n]=b<<16|b>>>16;B[n]=b<<8|b>>>24;C[n]=b;b=16843009*E^65537*D^257*t^16843008*n;s[f]=b<<24|b>>>8;u[f]=b<<16|b>>>16;v[f]=b<<8|b>>>24;w[f]=b;n?(n=t^g[g[g[E^t]]],l^=g[g[l]]):n=l=1}var F=[0,1,2,4,8,\n16,32,64,128,27,54],r=r.AES=x.extend({_doReset:function(){for(var c=this._key,e=c.words,a=c.sigBytes/4,c=4*((this._nRounds=a+6)+1),b=this._keySchedule=[],h=0;h>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255]):(d=d<<8|d>>>24,d=j[d>>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255],d^=F[h/a|0]<<24);b[h]=b[h-a]^d}e=this._invKeySchedule=[];for(a=0;aa||4>=h?d:s[j[d>>>24]]^u[j[d>>>16&255]]^v[j[d>>>\n8&255]]^w[j[d&255]]},encryptBlock:function(c,e){this._doCryptBlock(c,e,this._keySchedule,z,A,B,C,j)},decryptBlock:function(c,e){var a=c[e+1];c[e+1]=c[e+3];c[e+3]=a;this._doCryptBlock(c,e,this._invKeySchedule,s,u,v,w,y);a=c[e+1];c[e+1]=c[e+3];c[e+3]=a},_doCryptBlock:function(c,e,a,b,h,d,j,m){for(var n=this._nRounds,f=c[e]^a[0],g=c[e+1]^a[1],k=c[e+2]^a[2],p=c[e+3]^a[3],l=4,t=1;t>>24]^h[g>>>16&255]^d[k>>>8&255]^j[p&255]^a[l++],r=b[g>>>24]^h[k>>>16&255]^d[p>>>8&255]^j[f&255]^a[l++],s=\nb[k>>>24]^h[p>>>16&255]^d[f>>>8&255]^j[g&255]^a[l++],p=b[p>>>24]^h[f>>>16&255]^d[g>>>8&255]^j[k&255]^a[l++],f=q,g=r,k=s;q=(m[f>>>24]<<24|m[g>>>16&255]<<16|m[k>>>8&255]<<8|m[p&255])^a[l++];r=(m[g>>>24]<<24|m[k>>>16&255]<<16|m[p>>>8&255]<<8|m[f&255])^a[l++];s=(m[k>>>24]<<24|m[p>>>16&255]<<16|m[f>>>8&255]<<8|m[g&255])^a[l++];p=(m[p>>>24]<<24|m[f>>>16&255]<<16|m[g>>>8&255]<<8|m[k&255])^a[l++];c[e]=q;c[e+1]=r;c[e+2]=s;c[e+3]=p},keySize:8});q.AES=x._createHelper(r)})();\n\n/*\nCryptoJS v3.1.2 tripledes-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){function j(b,c){var a=(this._lBlock>>>b^this._rBlock)&c;this._rBlock^=a;this._lBlock^=a<>>b^this._lBlock)&c;this._lBlock^=a;this._rBlock^=a<a;a++){var f=q[a]-1;c[a]=b[f>>>5]>>>31-f%32&1}b=this._subKeys=[];for(f=0;16>f;f++){for(var d=b[f]=[],e=r[f],a=0;24>a;a++)d[a/6|0]|=c[(p[a]-1+e)%28]<<31-a%6,d[4+(a/6|0)]|=c[28+(p[a+24]-1+e)%28]<<31-a%6;d[0]=d[0]<<1|d[0]>>>31;for(a=1;7>a;a++)d[a]>>>=\n4*(a-1)+3;d[7]=d[7]<<5|d[7]>>>27}c=this._invSubKeys=[];for(a=0;16>a;a++)c[a]=b[15-a]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._subKeys)},decryptBlock:function(b,c){this._doCryptBlock(b,c,this._invSubKeys)},_doCryptBlock:function(b,c,a){this._lBlock=b[c];this._rBlock=b[c+1];j.call(this,4,252645135);j.call(this,16,65535);l.call(this,2,858993459);l.call(this,8,16711935);j.call(this,1,1431655765);for(var f=0;16>f;f++){for(var d=a[f],e=this._lBlock,h=this._rBlock,g=0,k=0;8>k;k++)g|=s[k][((h^\nd[k])&t[k])>>>0];this._lBlock=h;this._rBlock=e^g}a=this._lBlock;this._lBlock=this._rBlock;this._rBlock=a;j.call(this,1,1431655765);l.call(this,8,16711935);l.call(this,2,858993459);j.call(this,16,65535);j.call(this,4,252645135);b[c]=this._lBlock;b[c+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=e._createHelper(m);g=g.TripleDES=e.extend({_doReset:function(){var b=this._key.words;this._des1=m.createEncryptor(n.create(b.slice(0,2)));this._des2=m.createEncryptor(n.create(b.slice(2,4)));this._des3=\nm.createEncryptor(n.create(b.slice(4,6)))},encryptBlock:function(b,c){this._des1.encryptBlock(b,c);this._des2.decryptBlock(b,c);this._des3.encryptBlock(b,c)},decryptBlock:function(b,c){this._des3.decryptBlock(b,c);this._des2.encryptBlock(b,c);this._des1.decryptBlock(b,c)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=e._createHelper(g)})();\n\n/*\nCryptoJS v3.1.2 enc-base64.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<\ne;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();\n\n/*\nCryptoJS v3.1.2 md5.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(E){function h(a,f,g,j,p,h,k){a=a+(f&g|~f&j)+p+k;return(a<>>32-h)+f}function k(a,f,g,j,p,h,k){a=a+(f&j|g&~j)+p+k;return(a<>>32-h)+f}function l(a,f,g,j,h,k,l){a=a+(f^g^j)+h+l;return(a<>>32-k)+f}function n(a,f,g,j,h,k,l){a=a+(g^(f|~j))+h+l;return(a<>>32-k)+f}for(var r=CryptoJS,q=r.lib,F=q.WordArray,s=q.Hasher,q=r.algo,a=[],t=0;64>t;t++)a[t]=4294967296*E.abs(E.sin(t+1))|0;q=q.MD5=s.extend({_doReset:function(){this._hash=new F.init([1732584193,4023233417,2562383102,271733878])},\n_doProcessBlock:function(m,f){for(var g=0;16>g;g++){var j=f+g,p=m[j];m[j]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var g=this._hash.words,j=m[f+0],p=m[f+1],q=m[f+2],r=m[f+3],s=m[f+4],t=m[f+5],u=m[f+6],v=m[f+7],w=m[f+8],x=m[f+9],y=m[f+10],z=m[f+11],A=m[f+12],B=m[f+13],C=m[f+14],D=m[f+15],b=g[0],c=g[1],d=g[2],e=g[3],b=h(b,c,d,e,j,7,a[0]),e=h(e,b,c,d,p,12,a[1]),d=h(d,e,b,c,q,17,a[2]),c=h(c,d,e,b,r,22,a[3]),b=h(b,c,d,e,s,7,a[4]),e=h(e,b,c,d,t,12,a[5]),d=h(d,e,b,c,u,17,a[6]),c=h(c,d,e,b,v,22,a[7]),\nb=h(b,c,d,e,w,7,a[8]),e=h(e,b,c,d,x,12,a[9]),d=h(d,e,b,c,y,17,a[10]),c=h(c,d,e,b,z,22,a[11]),b=h(b,c,d,e,A,7,a[12]),e=h(e,b,c,d,B,12,a[13]),d=h(d,e,b,c,C,17,a[14]),c=h(c,d,e,b,D,22,a[15]),b=k(b,c,d,e,p,5,a[16]),e=k(e,b,c,d,u,9,a[17]),d=k(d,e,b,c,z,14,a[18]),c=k(c,d,e,b,j,20,a[19]),b=k(b,c,d,e,t,5,a[20]),e=k(e,b,c,d,y,9,a[21]),d=k(d,e,b,c,D,14,a[22]),c=k(c,d,e,b,s,20,a[23]),b=k(b,c,d,e,x,5,a[24]),e=k(e,b,c,d,C,9,a[25]),d=k(d,e,b,c,r,14,a[26]),c=k(c,d,e,b,w,20,a[27]),b=k(b,c,d,e,B,5,a[28]),e=k(e,b,\nc,d,q,9,a[29]),d=k(d,e,b,c,v,14,a[30]),c=k(c,d,e,b,A,20,a[31]),b=l(b,c,d,e,t,4,a[32]),e=l(e,b,c,d,w,11,a[33]),d=l(d,e,b,c,z,16,a[34]),c=l(c,d,e,b,C,23,a[35]),b=l(b,c,d,e,p,4,a[36]),e=l(e,b,c,d,s,11,a[37]),d=l(d,e,b,c,v,16,a[38]),c=l(c,d,e,b,y,23,a[39]),b=l(b,c,d,e,B,4,a[40]),e=l(e,b,c,d,j,11,a[41]),d=l(d,e,b,c,r,16,a[42]),c=l(c,d,e,b,u,23,a[43]),b=l(b,c,d,e,x,4,a[44]),e=l(e,b,c,d,A,11,a[45]),d=l(d,e,b,c,D,16,a[46]),c=l(c,d,e,b,q,23,a[47]),b=n(b,c,d,e,j,6,a[48]),e=n(e,b,c,d,v,10,a[49]),d=n(d,e,b,c,\nC,15,a[50]),c=n(c,d,e,b,t,21,a[51]),b=n(b,c,d,e,A,6,a[52]),e=n(e,b,c,d,r,10,a[53]),d=n(d,e,b,c,y,15,a[54]),c=n(c,d,e,b,p,21,a[55]),b=n(b,c,d,e,w,6,a[56]),e=n(e,b,c,d,D,10,a[57]),d=n(d,e,b,c,u,15,a[58]),c=n(c,d,e,b,B,21,a[59]),b=n(b,c,d,e,s,6,a[60]),e=n(e,b,c,d,z,10,a[61]),d=n(d,e,b,c,q,15,a[62]),c=n(c,d,e,b,x,21,a[63]);g[0]=g[0]+b|0;g[1]=g[1]+c|0;g[2]=g[2]+d|0;g[3]=g[3]+e|0},_doFinalize:function(){var a=this._data,f=a.words,g=8*this._nDataBytes,j=8*a.sigBytes;f[j>>>5]|=128<<24-j%32;var h=E.floor(g/\n4294967296);f[(j+64>>>9<<4)+15]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;f[(j+64>>>9<<4)+14]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;a.sigBytes=4*(f.length+1);this._process();a=this._hash;f=a.words;for(g=0;4>g;g++)j=f[g],f[g]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360;return a},clone:function(){var a=s.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=s._createHelper(q);r.HmacMD5=s._createHmacHelper(q)})(Math);\n\n/*\nCryptoJS v3.1.2 sha1-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var k=CryptoJS,b=k.lib,m=b.WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,p){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],j=a[3],b=a[4],c=0;80>c;c++){if(16>c)d[c]=n[p+c]|0;else{var g=d[c-3]^d[c-8]^d[c-14]^d[c-16];d[c]=g<<1|g>>>31}g=(e<<5|e>>>27)+b+d[c];g=20>c?g+((f&h|~f&j)+1518500249):40>c?g+((f^h^j)+1859775393):60>c?g+((f&h|f&j|h&j)-1894007588):g+((f^h^\nj)-899497514);b=j;j=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+j|0;a[4]=a[4]+b|0},_doFinalize:function(){var b=this._data,d=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=Math.floor(a/4294967296);d[(e+64>>>9<<4)+15]=a;b.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var b=l.clone.call(this);b._hash=this._hash.clone();return b}});k.SHA1=l._createHelper(b);k.HmacSHA1=l._createHmacHelper(b)})();\n\n/*\nCryptoJS v3.1.2 sha256-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=\nq[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;\nb[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);\n\n/*\nCryptoJS v3.1.2 sha224-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var b=CryptoJS,d=b.lib.WordArray,a=b.algo,c=a.SHA256,a=a.SHA224=c.extend({_doReset:function(){this._hash=new d.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=c._doFinalize.call(this);a.sigBytes-=4;return a}});b.SHA224=c._createHelper(a);b.HmacSHA224=c._createHmacHelper(a)})();\n\n/*\nCryptoJS v3.1.2 sha512-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,\nF=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<\n3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0>>0?1:0),b=b+c,j=j+u+(b>>>0>>0?1:0),b=b+t,j=j+q+(b>>>0>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0>>0?1:\n0),c=c+t,q=q+W+(c>>>0>>0?1:0),c=c+da,q=q+fa+(c>>>0>>0?1:0),c=c+b,q=q+j+(c>>>0>>0?1:0),b=u+T,s=p+s+(b>>>0>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0>>0?1:0);P=I.low=P+D;\nI.high=ba+S+(P>>>0>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();\n\n/*\nCryptoJS v3.1.2 sha384-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=\nd._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();\n\n/*\nCryptoJS v3.1.2 ripemd160-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/*\n\n(c) 2012 by Cedric Mesnil. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n(function(){var q=CryptoJS,d=q.lib,n=d.WordArray,p=d.Hasher,d=q.algo,x=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),z=n.create([11,14,15,12,\n5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),A=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),B=n.create([0,1518500249,1859775393,2400959708,2840853838]),C=n.create([1352829926,1548603684,1836072691,\n2053994217,0]),d=d.RIPEMD160=p.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,v){for(var b=0;16>b;b++){var c=v+b,f=e[c];e[c]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,f=B.words,d=C.words,n=x.words,q=y.words,p=z.words,w=A.words,t,g,h,j,r,u,k,l,m,s;u=t=c[0];k=g=c[1];l=h=c[2];m=j=c[3];s=r=c[4];for(var a,b=0;80>b;b+=1)a=t+e[v+n[b]]|0,a=16>b?a+((g^h^j)+f[0]):32>b?a+((g&h|~g&j)+f[1]):48>b?\na+(((g|~h)^j)+f[2]):64>b?a+((g&j|h&~j)+f[3]):a+((g^(h|~j))+f[4]),a|=0,a=a<>>32-p[b],a=a+r|0,t=r,r=j,j=h<<10|h>>>22,h=g,g=a,a=u+e[v+q[b]]|0,a=16>b?a+((k^(l|~m))+d[0]):32>b?a+((k&m|l&~m)+d[1]):48>b?a+(((k|~l)^m)+d[2]):64>b?a+((k&l|~k&m)+d[3]):a+((k^l^m)+d[4]),a|=0,a=a<>>32-w[b],a=a+s|0,u=s,s=m,m=l<<10|l>>>22,l=k,k=a;a=c[1]+h+m|0;c[1]=c[2]+j+s|0;c[2]=c[3]+r+u|0;c[3]=c[4]+t+k|0;c[4]=c[0]+g+l|0;c[0]=a},_doFinalize:function(){var e=this._data,d=e.words,b=8*this._nDataBytes,c=8*e.sigBytes;\nd[c>>>5]|=128<<24-c%32;d[(c+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;e.sigBytes=4*(d.length+1);this._process();e=this._hash;d=e.words;for(b=0;5>b;b++)c=d[b],d[b]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return e},clone:function(){var d=p.clone.call(this);d._hash=this._hash.clone();return d}});q.RIPEMD160=p._createHelper(d);q.HmacRIPEMD160=p._createHmacHelper(d)})(Math);\n\n/*\nCryptoJS v3.1.2 hmac.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;\"string\"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<